epic-sql
Version:
A Simple But Powerful SQL ORM!!!
65 lines (64 loc) • 2.49 kB
TypeScript
import { DefaultValue, Indexes } from "epic-sql-query";
import { BaseSchema } from "../base-schema";
import { MetaDataKeys } from "./enums";
export interface ColumnInterface extends ColumnOptions {
name: string;
resolve: (value: any) => any;
}
export interface ColumnOptions {
choices?: Array<string>;
length?: number | null;
nullable?: boolean;
primaryKey?: boolean;
index?: Indexes[];
collation?: string;
defaultValue?: DefaultValue;
onUpdate?: DefaultValue;
}
export interface PrimaryKeyInterface {
name: string;
type: string;
value: undefined;
schema: undefined;
mapping: undefined;
joinType: undefined;
resolver?: undefined;
dependencies?: undefined;
}
export declare const PrimaryKey: () => (target: Object, key: string) => void;
export declare const Column: (options?: ColumnOptions | undefined) => (target: Object, key: string) => void;
export declare type JoinTypes = "full" | "inner" | "left" | "right";
export interface RelationOptions<T extends BaseSchema, B extends BaseSchema> {
schema: () => new () => T;
mapping: [keyof T, keyof B];
joinType?: JoinTypes;
}
export interface OneRelationInterface extends RelationOptions<BaseSchema, BaseSchema> {
name: string;
type: MetaDataKeys.RELATION_INDEX;
value: MetaDataKeys.ONE_RELATION;
resolver?: undefined;
dependencies?: undefined;
}
export declare const OneRelation: <T extends BaseSchema, B extends BaseSchema>(options: RelationOptions<T, B>) => (target: B, key: string) => void;
export interface ManyRelationInterface extends RelationOptions<BaseSchema, BaseSchema> {
name: string;
type: MetaDataKeys.RELATION_INDEX;
value: MetaDataKeys.MANY_RELATION;
resolver?: undefined;
dependencies?: undefined;
}
export declare const ManyRelation: <T extends BaseSchema, B extends BaseSchema>(options: RelationOptions<T, B>) => (target: B, key: string) => void;
export interface MetadataOptions<T extends BaseSchema> {
resolver?: (Schema: T) => any;
dependencies?: (keyof T)[];
}
export interface MetadataInterface extends MetadataOptions<BaseSchema> {
name: string;
type: MetaDataKeys.METADATA_INDEX;
value: undefined;
schema: undefined;
mapping: undefined;
joinType: undefined;
}
export declare const Metadata: <T extends BaseSchema>(options?: MetadataOptions<T> | undefined) => (target: object, key: string) => void;