import {TableCheckOptions} from "../options/TableCheckOptions"; import {CheckMetadata} from "../../metadata/CheckMetadata"; /** * Database's table check constraint stored in this class. */ export class TableCheck { // ------------------------------------------------------------------------- // Public Properties // ------------------------------------------------------------------------- /** * Constraint name. */ name?: string; /** * Column that contains this constraint. */ columnNames?: string[] = []; /** * Check expression. */ expression?: string; // ------------------------------------------------------------------------- // Constructor // ------------------------------------------------------------------------- constructor(options: TableCheckOptions) { this.name = options.name; this.columnNames = options.columnNames; this.expression = options.expression; } // ------------------------------------------------------------------------- // Public Methods // ------------------------------------------------------------------------- /** * Creates a new copy of this constraint with exactly same properties. */ clone(): TableCheck { return new TableCheck({ name: this.name, columnNames: this.columnNames ? [...this.columnNames] : [], expression: this.expression, }); } // ------------------------------------------------------------------------- // Static Methods // ------------------------------------------------------------------------- /** * Creates checks from the check metadata object. */ static create(checkMetadata: CheckMetadata): TableCheck { return new TableCheck({ name: checkMetadata.name, expression: checkMetadata.expression }); } }