alinea
Version:
[](https://npmjs.org/package/alinea) [](https://packagephobia.com/result?p=alinea)
57 lines (56 loc) • 3.99 kB
TypeScript
import { Connection, PreviewUpdate, ResolveDefaults, Schema } from 'alinea/core';
import { EntryRow, EntryTable } from 'alinea/core/EntryRow';
import type * as pages from 'alinea/core/pages';
import { Realm } from 'alinea/core/pages/Realm';
import { Expr, ExprData, OrderBy, QueryData, Select, Table } from 'rado';
import { Database } from '../Database.js';
import { LinkResolver } from './LinkResolver.js';
import { ResolveContext } from './ResolveContext.js';
type Interim = any;
export interface PostContext {
linkResolver: LinkResolver;
}
export declare class EntryResolver {
db: Database;
schema: Schema;
parsePreview?: ((preview: PreviewUpdate) => Promise<EntryRow | undefined>) | undefined;
defaults?: ResolveDefaults | undefined;
targets: Schema.Targets;
constructor(db: Database, schema: Schema, parsePreview?: ((preview: PreviewUpdate) => Promise<EntryRow | undefined>) | undefined, defaults?: ResolveDefaults | undefined);
fieldOf(ctx: ResolveContext, target: pages.TargetData, field: string): ExprData;
pageFields(ctx: ResolveContext): Array<[string, ExprData]>;
selectFieldsOf(ctx: ResolveContext, target: pages.TargetData): Array<[string, ExprData]>;
exprUnOp(ctx: ResolveContext, { op, expr }: pages.ExprData.UnOp): ExprData;
exprBinOp(ctx: ResolveContext, { op, a, b }: pages.ExprData.BinOp): ExprData;
exprField(ctx: ResolveContext, { target, field }: pages.ExprData.Field): ExprData;
exprAccess(ctx: ResolveContext, { expr, field }: pages.ExprData.Access): ExprData;
exprValue(ctx: ResolveContext, { value }: pages.ExprData.Value): ExprData;
exprRecord(ctx: ResolveContext, { fields }: pages.ExprData.Record): ExprData;
exprCase(ctx: ResolveContext, { expr, cases, defaultCase }: pages.ExprData.Case): ExprData;
expr(ctx: ResolveContext, expr: pages.ExprData): ExprData;
selectRecord(ctx: ResolveContext, { fields }: pages.Selection.Record): ExprData;
selectRow(ctx: ResolveContext, { target }: pages.Selection.Row): ExprData;
selectCursor(ctx: ResolveContext, selection: pages.Selection.Cursor): ExprData;
selectExpr(ctx: ResolveContext, { expr, fromParent }: pages.Selection.Expr): ExprData;
selectCount(): ExprData;
selectAll(ctx: ResolveContext, target: pages.TargetData): ExprData;
select(ctx: ResolveContext, selection: pages.Selection): ExprData;
queryRecord(ctx: ResolveContext, selection: pages.Selection.Record): QueryData.Select;
querySource(ctx: ResolveContext, source: pages.CursorSource | undefined, hasSearch: boolean): Select<Table.Select<EntryTable>>;
orderBy(ctx: ResolveContext, orderBy: Array<pages.OrderBy>): Array<OrderBy>;
conditionLocale(Table: Table<EntryTable>, locale?: string): Expr<boolean>;
conditionRealm(Table: Table<EntryTable>, realm: Realm): Expr<boolean>;
conditionLocation(Table: Table<EntryTable>, location: Array<string>): Expr<boolean>;
conditionSearch(Table: Table<EntryTable>, searchTerms?: Array<string>): Expr<boolean>;
queryCursor(ctx: ResolveContext, { cursor }: pages.Selection.Cursor): QueryData.Select;
query(ctx: ResolveContext, selection: pages.Selection): QueryData.Select;
postRow(ctx: PostContext, interim: Interim, { target }: pages.Selection.Row): Promise<void>;
postCursor(ctx: PostContext, interim: Interim, { cursor }: pages.Selection.Cursor): Promise<void>;
postField(ctx: PostContext, interim: Interim, { target, field }: pages.ExprData.Field): Promise<void>;
postExpr(ctx: PostContext, interim: Interim, { expr }: pages.Selection.Expr): Promise<void>;
postFieldsOf(ctx: PostContext, interim: Interim, target: pages.TargetData): Promise<void>;
postRecord(ctx: PostContext, interim: Interim, { fields }: pages.Selection.Record): Promise<void>;
post(ctx: PostContext, interim: Interim, selection: pages.Selection): Promise<void>;
resolve: <T>({ selection, location, locale, realm, preview }: Connection.ResolveParams) => Promise<T>;
}
export {};