@riao/dbal
Version:
157 lines (156 loc) • 4.74 kB
TypeScript
import { DatabaseFunctionToken } from '../functions/function-token';
import { ColumnType } from './column-type';
import * as DataTypes from './column-values';
import { InlineForeignKeyConstraint } from '../ddl/foreign-key-constraint';
import { DatabaseTrigger } from '../triggers';
/**
* Base interface for column options
*/
export interface BaseColumnOptions {
name: string;
type: ColumnType;
default?: null | string | DataTypes.ColumnValue | DatabaseFunctionToken;
primaryKey?: boolean;
required?: boolean;
isUnique?: boolean;
fk?: InlineForeignKeyConstraint;
triggers?: (options: ColumnTriggerOptions) => DatabaseTrigger[];
}
export interface ColumnTriggerOptions {
table: string;
column: string;
idColumn: string;
}
/**
* UUID column options
*/
export interface UUIDColumnOptions extends BaseColumnOptions {
type: ColumnType.UUID;
}
/**
* Bool column options
*/
export interface BoolColumnOptions extends BaseColumnOptions {
default?: DataTypes.BoolValue | DatabaseFunctionToken<ColumnType.BOOL>;
type: ColumnType.BOOL;
}
/**
* Base class for integer column options
*/
export interface BaseIntColumnOptions extends BaseColumnOptions {
default?: DataTypes.IntegerValue | DatabaseFunctionToken<ColumnType.INT>;
autoIncrement?: boolean;
}
/**
* Tiny int column options
*/
export interface TinyIntColumnOptions extends BaseIntColumnOptions {
type: ColumnType.TINYINT;
}
/**
* Small int column options
*/
export interface SmallIntColumnOptions extends BaseIntColumnOptions {
type: ColumnType.SMALLINT;
}
/**
* Int column options
*/
export interface IntColumnOptions extends BaseIntColumnOptions {
type: ColumnType.INT;
}
/**
* Big int column options
*/
export interface BigIntColumnOptions extends BaseIntColumnOptions {
type: ColumnType.BIGINT;
}
/**
* Base interface for decimal types
*/
export interface BaseDecimalColumnOptions extends BaseColumnOptions {
default?: DataTypes.DecimalValue | DatabaseFunctionToken<ColumnType.DECIMAL>;
}
/**
* Decimal column options
*/
export interface DecimalColumnOptions extends BaseDecimalColumnOptions {
significant: number;
decimal: number;
type: ColumnType.DECIMAL;
}
/**
* Float column options
*/
export interface FloatColumnOptions extends BaseDecimalColumnOptions {
type: ColumnType.FLOAT;
}
/**
* Double column options
*/
export interface DoubleColumnOptions extends BaseDecimalColumnOptions {
type: ColumnType.DOUBLE;
}
export type DateDefaultValues = null | string | DataTypes.DateValue;
/**
* Date column options
*/
export interface DateColumnOptions extends BaseColumnOptions {
default?: DateDefaultValues | DatabaseFunctionToken<ColumnType.DATE>;
type: ColumnType.DATE;
}
/**
* Time column options
*/
export interface TimeColumnOptions extends BaseColumnOptions {
default?: DateDefaultValues | DatabaseFunctionToken<ColumnType.TIME>;
type: ColumnType.TIME;
}
/**
* Timestamp column options
*/
export interface TimestampColumnOptions extends BaseColumnOptions {
default?: DateDefaultValues | DatabaseFunctionToken<ColumnType.TIMESTAMP>;
type: ColumnType.TIMESTAMP;
}
/**
* Base interface for text column options
*/
export interface BaseTextColumnOptions extends BaseColumnOptions {
default?: DataTypes.TextValue | DatabaseFunctionToken<ColumnType.CHAR> | DatabaseFunctionToken<ColumnType.VARCHAR> | DatabaseFunctionToken<ColumnType.TEXT>;
}
/**
* Char column options
*/
export interface CharColumnOptions extends BaseTextColumnOptions {
type: ColumnType.CHAR;
}
/**
* VarChar column options
*/
export interface VarCharColumnOptions extends BaseTextColumnOptions {
length: number;
type: ColumnType.VARCHAR;
}
/**
* Text column options
*/
export interface TextColumOptions extends BaseTextColumnOptions {
type: ColumnType.TEXT;
}
/**
* Base interface for blob column options
*/
export interface BaseBlobColumnOptions extends BaseColumnOptions {
default?: DataTypes.BlobValue | DatabaseFunctionToken<ColumnType.BLOB>;
}
/**
* Blob column options
*/
export interface BlobColumnOptions extends BaseBlobColumnOptions {
type: ColumnType.BLOB;
}
/**
* Column options
*/
export type ColumnOptions = UUIDColumnOptions | BoolColumnOptions | TinyIntColumnOptions | SmallIntColumnOptions | IntColumnOptions | BigIntColumnOptions | DecimalColumnOptions | FloatColumnOptions | DoubleColumnOptions | DateColumnOptions | TimeColumnOptions | TimestampColumnOptions | CharColumnOptions | VarCharColumnOptions | TextColumOptions | BlobColumnOptions;