dblang/src/types.ts

50 lines
1.3 KiB
TypeScript
Raw Normal View History

2023-01-23 21:19:18 +01:00
import { Attribute, Table } from "./db";
2023-01-29 22:11:24 +01:00
import { Aggregation, BooleanModifier, Datatype, Joins, Modifier } from "./dbStructure";
2023-02-13 23:44:08 +01:00
import { QueryBuilder, selectQuery } from "./query";
2023-01-23 21:19:18 +01:00
export type primaryData = string | number | boolean | null;
export type allModifierInput = primaryData | Modifier | selectQuery | Attribute | Aggregation;
export type selectElements = primaryData | Attribute | Aggregation | selectQuery
export type selectFromElements = Table | Joins | null;
export type serializeReturn = [string, primaryData[]];
2023-02-13 23:44:08 +01:00
export type DatatypeBuild = [QueryBuilder, number];
2023-01-24 10:40:16 +01:00
export type attributeSettings = {
unique?: boolean,
2023-01-24 20:34:03 +01:00
autoIncrement?: boolean,
2023-01-24 10:40:16 +01:00
default?: primaryData,
notNull?: boolean
primaryKey?: boolean,
foreginKey?: {
link: Attribute,
onDelete?: onAction,
onUpdate?: onAction
2023-01-29 22:11:24 +01:00
},
2023-02-13 23:44:08 +01:00
check?: BooleanModifier | ((a: Attribute) => BooleanModifier)
2023-01-24 10:40:16 +01:00
};
2023-02-13 23:44:08 +01:00
2023-01-29 22:11:24 +01:00
export type extendedAttributeSettings = {
type: Datatype,
unique?: boolean,
autoIncrement?: boolean,
default?: primaryData,
notNull?: boolean
primaryKey?: boolean,
foreginKey?: {
link: Attribute,
onDelete?: onAction,
onUpdate?: onAction
},
2023-02-13 23:44:08 +01:00
check?: BooleanModifier | ((a: Attribute) => BooleanModifier)
2023-01-29 22:11:24 +01:00
}
2023-01-23 21:19:18 +01:00
2023-01-23 22:10:33 +01:00
export enum onAction {
2023-01-23 21:19:18 +01:00
cascade,
noAction,
setNull,
setDefault
2023-01-29 22:11:24 +01:00
}