lecoffre-back/src/common/repositories/SeatsRepository.ts
2024-04-11 11:35:07 +02:00

79 lines
1.7 KiB
TypeScript

import Database from "@Common/databases/database";
import BaseRepository from "@Repositories/BaseRepository";
import { Service } from "typedi";
import { Prisma, Seats } from "@prisma/client";
@Service()
export default class SeatsRepository extends BaseRepository {
constructor(private database: Database) {
super();
}
protected get model() {
return this.database.getClient().seats;
}
protected get instanceDb() {
return this.database.getClient();
}
/**
* @description : Find many seats
*/
public async findMany(query: Prisma.SeatsFindManyArgs) {
query.take = Math.min(query.take || this.defaultFetchRows, this.maxFetchRows);
if (!query.include) return this.model.findMany({ ...query });
return this.model.findMany({ ...query });
}
/**
* @description : find unique seat
*/
public async findOneByUid(uid: string, query?: Prisma.SeatsInclude): Promise<Seats | null> {
return this.model.findUnique({
where: {
uid: uid,
},
include: query,
});
}
/**
* @description : Create a seat
*/
public async create(userUid: string, subscriptionUid: string): Promise<Seats> {
const createArgs: Prisma.SeatsCreateArgs = {
data: {
subscription: {
connect: {
uid: subscriptionUid
},
},
user: {
connect: {
uid: userUid
},
},
},
};
{
return this.model.create(createArgs);
}
}
/**
* @description : Delete a seat
*/
public async delete(uid: string) {
return this.model.delete({
where: {
uid: uid,
},
});
}
}