UNPKG

@riao/dbal

Version:
157 lines (156 loc) 4.74 kB
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;