type ModelName = Prisma.ModelName;
type ModelDelegate<N extends ModelName> = PrismaClient[Uncapitalize<N>];
export function getQueryMethod<T extends ModelDelegate<ModelName>>(model: T, single: boolean = false) {
const method = single ? 'findFirst' : 'findMany';
return model[method];
}
export class ClusterRepository implements IClusterRepository {
constructor(private readonly databaseClientService: IDatabaseClientService) {}
async getClustersByCriteria(criteria: Prisma.ClusterWhereInput, options: QueryOptions) {
return withDatabaseError(async () => {
const refinedClient = getQueryMethod(this.databaseClientService.cluster, options.single);
return refinedClient({ where: criteria, ...options });
});
}
type ModelName = Prisma.ModelName;
type ModelDelegate<N extends ModelName> = PrismaClient[Uncapitalize<N>];
export function getQueryMethod<T extends ModelDelegate<ModelName>>(model: T, single: boolean = false) {
const method = single ? 'findFirst' : 'findMany';
return model[method];
}
export class ClusterRepository implements IClusterRepository {
constructor(private readonly databaseClientService: IDatabaseClientService) {}
async getClustersByCriteria(criteria: Prisma.ClusterWhereInput, options: QueryOptions) {
return withDatabaseError(async () => {
const refinedClient = getQueryMethod(this.databaseClientService.cluster, options.single);
return refinedClient({ where: criteria, ...options });
});
}