@casl/prisma
Version:
Allows to query accessible records using Prisma client based on CASL rules
20 lines (19 loc) • 823 B
TypeScript
import { ForcedSubject } from '@casl/ability';
export declare const prismaQuery: (query: {
[x: string]: any;
}, ...args: unknown[]) => {
(...args: any[]): any;
ast: import("@ucast/core").Condition;
};
export type Model<T, TName extends string> = T & ForcedSubject<TName>;
export type Subjects<T extends Partial<Record<string, Record<string, unknown>>>> = keyof T | {
[K in keyof T]: Model<T[K], K & string>;
}[keyof T];
/**
* Extracts Prisma model name from given object and possible list of all subjects
*/
export type ExtractModelName<TObject, TModelName extends PropertyKey> = TObject extends {
kind: TModelName;
} ? TObject['kind'] : TObject extends ForcedSubject<TModelName> ? TObject['__caslSubjectType__'] : TObject extends {
__typename: TModelName;
} ? TObject['__typename'] : TModelName;