import { Queryer, SyncQueryer } from "./db"; import { Viewer, Ent, ID, LoadRowsOptions, LoadRowOptions, Data, DataOptions, QueryableDataOptions, EditRowOptions, LoadEntOptions, LoadCustomEntOptions, EdgeQueryableDataOptions, Context, SelectBaseDataOptions, CreateRowOptions, QueryDataOptions } from "./base"; import { Executor } from "../action"; import * as clause from "./clause"; import { Builder } from "../action"; import DataLoader from "dataloader"; export declare function loadEnt(viewer: Viewer, id: ID, options: LoadEntOptions): Promise; export declare function loadEntViaKey(viewer: Viewer, key: any, options: LoadEntOptions): Promise; export declare function loadEntX(viewer: Viewer, id: ID, options: LoadEntOptions): Promise; export declare function loadEntXViaKey(viewer: Viewer, key: any, options: LoadEntOptions): Promise; export declare function loadEntFromClause(viewer: Viewer, options: LoadEntOptions, clause: clause.Clause): Promise; export declare function loadEntXFromClause(viewer: Viewer, options: LoadEntOptions, clause: clause.Clause): Promise; export declare function loadEnts(viewer: Viewer, options: LoadEntOptions, ...ids: ID[]): Promise; export declare function loadEntsFromClause(viewer: Viewer, clause: clause.Clause, options: LoadEntOptions): Promise>; export declare function loadCustomEnts(viewer: Viewer, options: LoadCustomEntOptions, query: CustomQuery): Promise; interface rawQueryOptions { query: string; values?: any[]; logValues?: any[]; } export declare type CustomQuery = string | rawQueryOptions | clause.Clause | QueryDataOptions; export declare function loadCustomData(options: SelectBaseDataOptions, query: CustomQuery, context: Context | undefined): Promise; export declare function loadDerivedEnt(viewer: Viewer, data: Data, loader: new (viewer: Viewer, data: Data) => T): Promise; export declare function loadDerivedEntX(viewer: Viewer, data: Data, loader: new (viewer: Viewer, data: Data) => T): Promise; export declare function applyPrivacyPolicyForEnt(viewer: Viewer, ent: T | null): Promise; export declare function applyPrivacyPolicyForEntX(viewer: Viewer, ent: T): Promise; export declare function loadRowX(options: LoadRowOptions): Promise; export declare function loadRow(options: LoadRowOptions): Promise; export declare function performRawQuery(query: string, values: any[], logValues?: any[]): Promise; export declare function loadRows(options: LoadRowsOptions): Promise; export declare function buildQuery(options: QueryableDataOptions): string; interface GroupQueryOptions { tableName: string; clause?: clause.Clause; groupColumn: string; fields: string[]; values: any[]; orderby?: string; limit: number; } export declare function buildGroupQuery(options: GroupQueryOptions): [string, clause.Clause]; export interface DataOperation { preFetch?(queryer: Queryer, context?: Context): Promise; performWriteSync(queryer: SyncQueryer, context?: Context): void; performWrite(queryer: Queryer, context?: Context): Promise; returnedEntRow?(): Data | null; resolve?(executor: Executor): void; postFetch?(queryer: Queryer, context?: Context): Promise; } export interface EditNodeOptions extends EditRowOptions { fieldsToResolve: string[]; } export declare class EditNodeOperation implements DataOperation { options: EditNodeOptions; private existingEnt; row: Data | null; constructor(options: EditNodeOptions, existingEnt?: Ent | null); resolve(executor: Executor): void; performWrite(queryer: Queryer, context?: Context): Promise; reloadRow(queryer: SyncQueryer, id: ID, options: EditNodeOptions): void; performWriteSync(queryer: SyncQueryer, context?: Context): void; returnedEntRow(): Data | null; } export declare class EdgeOperation implements DataOperation { edgeInput: AssocEdgeInput; private options; private edgeData; private constructor(); preFetch(queryer: Queryer, context?: Context): Promise; performWrite(queryer: Queryer, context?: Context): Promise; performWriteSync(queryer: SyncQueryer, context?: Context): void; private getDeleteRowParams; private performDeleteWrite; private performDeleteWriteSync; private getInsertRowParams; private performInsertWrite; private performInsertWriteSync; private resolveImpl; resolve(executor: Executor): void; symmetricEdge(): EdgeOperation; inverseEdge(edgeData: AssocEdgeData): EdgeOperation; private static resolveIDs; private static isBuilder; private static resolveData; static inboundEdge(builder: Builder, edgeType: string, id1: Builder | ID, nodeType: string, options?: AssocEdgeInputOptions): EdgeOperation; static outboundEdge(builder: Builder, edgeType: string, id2: Builder | ID, nodeType: string, options?: AssocEdgeInputOptions): EdgeOperation; static removeInboundEdge(builder: Builder, edgeType: string, id1: ID): EdgeOperation; static removeOutboundEdge(builder: Builder, edgeType: string, id2: ID): EdgeOperation; } export declare function buildInsertQuery(options: CreateRowOptions, suffix?: string): [string, string[], string[]]; export declare function createRow(queryer: Queryer, options: CreateRowOptions, suffix: string): Promise; export declare function createRowSync(queryer: SyncQueryer, options: CreateRowOptions, suffix: string): Data | null; export declare function buildUpdateQuery(options: EditRowOptions, id: ID, suffix?: string): [string, any[], any[]]; export declare function editRow(queryer: Queryer, options: EditRowOptions, id: ID, suffix?: string): Promise; export declare function editRowSync(queryer: SyncQueryer, options: EditRowOptions, id: ID, suffix?: string): Data | null; export declare function deleteRows(queryer: Queryer, options: DataOptions, cls: clause.Clause): Promise; export declare function deleteRowsSync(queryer: SyncQueryer, options: DataOptions, cls: clause.Clause): void; export declare class DeleteNodeOperation implements DataOperation { private id; private options; constructor(id: ID, options: DataOptions); performWrite(queryer: Queryer, context?: Context): Promise; performWriteSync(queryer: SyncQueryer, context?: Context): void; } export declare class AssocEdge { id1: ID; id1Type: string; edgeType: string; id2: ID; id2Type: string; time: Date; data?: string | null; constructor(data: Data); getCursor(): string; } interface cursorOptions { row: Data; col: string; cursorKey?: string; conv?: (any: any) => any; } export declare function getCursor(opts: cursorOptions): string; export interface AssocEdgeInputOptions { time?: Date; data?: string | Builder; } export interface AssocEdgeInput extends AssocEdgeInputOptions { id1: ID; id1Type: string; edgeType: string; id2: ID; id2Type: string; } export declare class AssocEdgeData { edgeType: string; edgeName: string; symmetricEdge: boolean; inverseEdgeType?: string; edgeTable: string; constructor(data: Data); } export declare const assocEdgeLoader: DataLoader; export declare function loadEdgeData(edgeType: string): Promise; export declare function loadEdgeDatas(...edgeTypes: string[]): Promise>; export interface AssocEdgeConstructor { new (row: Data): T; } interface loadEdgesOptions { id1: ID; edgeType: string; context?: Context; queryOptions?: EdgeQueryableDataOptions; } interface loadCustomEdgesOptions extends loadEdgesOptions { ctr: AssocEdgeConstructor; } export declare const DefaultLimit = 1000; export declare function defaultEdgeQueryOptions(id1: ID, edgeType: string): EdgeQueryableDataOptions; export declare function loadEdges(options: loadEdgesOptions): Promise; export declare function loadCustomEdges(options: loadCustomEdgesOptions): Promise; export declare function loadUniqueEdge(options: loadEdgesOptions): Promise; export declare function loadUniqueNode(viewer: Viewer, id1: ID, edgeType: string, options: LoadEntOptions): Promise; export declare function loadRawEdgeCountX(options: loadEdgesOptions): Promise; interface loadEdgeForIDOptions extends loadCustomEdgesOptions { id2: ID; } export declare function loadEdgeForID2(options: loadEdgeForIDOptions): Promise; export declare function loadNodesByEdge(viewer: Viewer, id1: ID, edgeType: string, options: LoadEntOptions): Promise; export declare function applyPrivacyPolicyForRow(viewer: Viewer, options: LoadEntOptions, row: Data | null): Promise; export declare function applyPrivacyPolicyForRowX(viewer: Viewer, options: LoadEntOptions, row: Data): Promise; export declare function applyPrivacyPolicyForRows(viewer: Viewer, rows: Data[], options: LoadEntOptions): Promise>; export declare function getEdgeTypeInGroup(viewer: Viewer, id1: ID, id2: ID, m: Map): Promise<[T, AssocEdge] | undefined>; export {};