import { ColumnMetadata } from "./Column"; import { UserActionType, UserRoleName } from "./base"; import { BasePermissionRule, InsertPermissionRule, SelectPermissionRule, UpdatePermissionRule } from "./permissions"; import { Where } from "./whereClause"; export type EntityTarget = any; export interface EntityRootField { /** * name for root field */ name?: string; /** * user visible comment for root field */ comment?: string; } export type Permissions = { [role: UserRoleName]: { /** * append where clause to all actions */ where?: Where; insert?: InsertPermissionRule | boolean; select?: SelectPermissionRule | boolean; update?: UpdatePermissionRule | boolean; } & { [action in Exclude]?: BasePermissionRule | boolean; } } export interface EntityOptions { /** * Table name which will be show up in hasura. */ customName?: string; customRootFields?: Partial>, permissions?: Permissions } export interface EntityInternalStorageWorkspace { entityOptions: EntityOptions | undefined, columnMetadata: ColumnMetadata[], }