refql
Version:
A Node.js and Deno library for composing and running SQL queries.
30 lines (29 loc) • 2.13 kB
TypeScript
import { flEquals } from "../common/consts";
import { CUDOutput, Deletable, Insertable, InsertParams, PropMap, RequiredRefQLOptions, RQLOutput, RQLParams, Selectable, Simplify, Updatable, UpdateParams } from "../common/types";
import PropType from "../Prop/PropType";
import { RQLTag } from "../RQLTag";
import { DeleteRQLTag } from "../RQLTag/DeleteRQLTag";
import { InsertRQLTag } from "../RQLTag/InsertRQLTag";
import { UpdateRQLTag } from "../RQLTag/UpdateRQLTag";
export interface Table<TableId extends string = any, Props = any> {
<Components extends Selectable<TableId, Props>[]>(components: Components): RQLTag<TableId, Props, Components, RQLParams<TableId, Props, Components>, RQLOutput<TableId, Props, Components>>;
tableId: TableId;
name: string;
schema?: string;
props: Props;
equals(other: Table<TableId, Props>): boolean;
[flEquals]: this["equals"];
toString(): string;
insert<Components extends Insertable<TableId>[]>(components: Components): InsertRQLTag<TableId, Simplify<{
data: InsertParams<Props>[];
} & Omit<RQLParams<TableId, Props, Components>, "rows">>, CUDOutput<TableId, Props, Components>>;
update<Components extends Updatable<TableId>[]>(components: Components): UpdateRQLTag<TableId, Simplify<{
data: UpdateParams<Props>;
} & Omit<RQLParams<TableId, Props, Components>, "rows">>, CUDOutput<TableId, Props, Components>>;
delete<Components extends Deletable<TableId>[]>(components: Components): DeleteRQLTag<TableId, RQLParams<TableId, Props, Components>, CUDOutput<TableId, Props, Components>>;
addProps<Props2 extends PropType<any>[]>(props: Props2): Table<TableId, Props & PropMap<TableId, Props2>>;
}
declare const makeTable: (options: RequiredRefQLOptions) => <TableId extends string, Props extends PropType<any>[]>(name: TableId, props: Props) => Table<TableId, PropMap<TableId, Props>>;
export declare function isTable(x: any): x is Table;
export declare const TableX: <TableId extends string, Props extends PropType<any>[]>(name: TableId, props: Props) => Table<TableId, PropMap<TableId, Props>>;
export default makeTable;