UNPKG

@proofkit/fmodata

Version:
58 lines (57 loc) 5.17 kB
import { ExecutionContext, InferSchemaType, InsertData, UpdateData } from '../types.js'; import { StandardSchemaV1 } from '@standard-schema/spec'; import { BaseTable } from './base-table.js'; import { TableOccurrence } from './table-occurrence.js'; import { QueryBuilder } from './query-builder.js'; import { RecordBuilder } from './record-builder.js'; import { InsertBuilder } from './insert-builder.js'; import { DeleteBuilder } from './delete-builder.js'; import { UpdateBuilder } from './update-builder.js'; import { Database } from './database.js'; type ExtractNavigationNames<O extends TableOccurrence<any, any, any, any> | undefined> = O extends TableOccurrence<any, any, infer Nav, any> ? Nav extends Record<string, any> ? keyof Nav & string : never : never; type ExtractSchemaFromOccurrence<O> = O extends TableOccurrence<infer BT, any, any, any> ? BT extends BaseTable<infer S, any, any, any> ? S : never : never; type ExtractDefaultSelect<O> = O extends TableOccurrence<infer BT, any, any, infer DefSelect> ? BT extends BaseTable<infer S, any, any, any> ? DefSelect extends "all" ? keyof S : DefSelect extends "schema" ? keyof S : DefSelect extends readonly (infer K)[] ? K & keyof S : keyof S : never : never; type ResolveNavigationItem<T> = T extends () => infer R ? R : T; type FindNavigationTarget<O extends TableOccurrence<any, any, any, any> | undefined, Name extends string> = O extends TableOccurrence<any, any, infer Nav, any> ? Nav extends Record<string, any> ? Name extends keyof Nav ? ResolveNavigationItem<Nav[Name]> : TableOccurrence<BaseTable<Record<string, StandardSchemaV1>, any, any, any>, any, any, any> : TableOccurrence<BaseTable<Record<string, StandardSchemaV1>, any, any, any>, any, any, any> : TableOccurrence<BaseTable<Record<string, StandardSchemaV1>, any, any, any>, any, any, any>; export declare class EntitySet<Schema extends Record<string, StandardSchemaV1> = any, Occ extends TableOccurrence<any, any, any, any> | undefined = undefined> { private occurrence?; private tableName; private databaseName; private context; private database; private isNavigateFromEntitySet?; private navigateRelation?; private navigateSourceTableName?; constructor(config: { occurrence?: Occ; tableName: string; databaseName: string; context: ExecutionContext; database?: any; }); static create<OccurrenceSchema extends Record<string, StandardSchemaV1>, Occ extends TableOccurrence<BaseTable<OccurrenceSchema, any, any, any>, any, any, any> | undefined = undefined>(config: { occurrence?: Occ; tableName: string; databaseName: string; context: ExecutionContext; database: Database<any>; }): EntitySet<OccurrenceSchema, Occ>; list(): QueryBuilder<InferSchemaType<Schema>, Occ extends TableOccurrence<any, any, any, any> ? ExtractDefaultSelect<Occ> : keyof InferSchemaType<Schema>, false, false, Occ>; get(id: string | number): RecordBuilder<InferSchemaType<Schema>, false, keyof InferSchemaType<Schema>, Occ>; insert(data: Occ extends TableOccurrence<infer BT, any, any, any> ? BT extends BaseTable<any, any, any, any> ? InsertData<BT> : Partial<InferSchemaType<Schema>> : Partial<InferSchemaType<Schema>>, options: { returnFullRecord: false; }): InsertBuilder<InferSchemaType<Schema>, Occ, "minimal">; insert(data: Occ extends TableOccurrence<infer BT, any, any, any> ? BT extends BaseTable<any, any, any, any> ? InsertData<BT> : Partial<InferSchemaType<Schema>> : Partial<InferSchemaType<Schema>>, options?: { returnFullRecord?: true; }): InsertBuilder<InferSchemaType<Schema>, Occ, "representation">; update(data: Occ extends TableOccurrence<infer BT, any, any, any> ? BT extends BaseTable<any, any, any, any> ? UpdateData<BT> : Partial<InferSchemaType<Schema>> : Partial<InferSchemaType<Schema>>, options: { returnFullRecord: true; }): UpdateBuilder<InferSchemaType<Schema>, Occ extends TableOccurrence<infer BT, any, any, any> ? BT extends BaseTable<any, any, any, any> ? BT : BaseTable<Schema, any, any, any> : BaseTable<Schema, any, any, any>, "representation">; update(data: Occ extends TableOccurrence<infer BT, any, any, any> ? BT extends BaseTable<any, any, any, any> ? UpdateData<BT> : Partial<InferSchemaType<Schema>> : Partial<InferSchemaType<Schema>>, options?: { returnFullRecord?: false; }): UpdateBuilder<InferSchemaType<Schema>, Occ extends TableOccurrence<infer BT, any, any, any> ? BT extends BaseTable<any, any, any, any> ? BT : BaseTable<Schema, any, any, any> : BaseTable<Schema, any, any, any>, "minimal">; delete(): DeleteBuilder<InferSchemaType<Schema>>; navigate<RelationName extends ExtractNavigationNames<Occ>>(relationName: RelationName): EntitySet<ExtractSchemaFromOccurrence<FindNavigationTarget<Occ, RelationName>> extends Record<string, StandardSchemaV1> ? ExtractSchemaFromOccurrence<FindNavigationTarget<Occ, RelationName>> : Record<string, StandardSchemaV1>, FindNavigationTarget<Occ, RelationName>>; navigate(relationName: string): EntitySet<Record<string, StandardSchemaV1>, undefined>; } export {};