UNPKG

@devbro/sql-generator

Version:
102 lines 2.34 kB
import { Expression } from "./Expression"; class Column { columnName = ""; properties = { type: "string", length: 255, nullable: false, unique: false, default: null }; constructor(columnName, type) { this.columnName = columnName; this.properties.type = type; } length(length) { this.properties.length = length; return this; } nullable(nullable = true) { this.properties.nullable = nullable; return this; } unique(unique = true) { this.properties.unique = unique; return this; } default(value) { this.properties.default = value; return this; } } class Blueprint { tableName = ""; columns = []; existingTable = false; primaryKeys = []; constructor() { } setTableName(tableName, existingTable = false) { this.tableName = tableName; this.existingTable = existingTable; } Boolean(columnName) { const rc = new Column(columnName, "boolean"); this.columns.push(rc); return rc; } char(columnName) { const rc = new Column(columnName, "char"); this.columns.push(rc); return rc; } string(columnName, length = 255) { const rc = new Column(columnName, "string"); rc.length(length); this.columns.push(rc); return rc; } text(columnName) { const rc = new Column(columnName, "text"); this.columns.push(rc); return rc; } integer(columnName) { const rc = new Column(columnName, "integer"); this.columns.push(rc); return rc; } float(columnName) { const rc = new Column(columnName, "float"); this.columns.push(rc); return rc; } double(columnName) { const rc = new Column(columnName, "double"); this.columns.push(rc); return rc; } id() { const rc = new Column("id", "serial"); this.columns.push(rc); this.primaryKeys.push("id"); return rc; } timestamps() { this.columns.push(new Column("created_at", "timestamp").default(new Expression("CURRENT_TIMESTAMP"))); this.columns.push(new Column("updated_at", "timestamp").default(new Expression("CURRENT_TIMESTAMP"))); } date(columnName) { const rc = new Column(columnName, "date"); this.columns.push(rc); return rc; } primary(keys) { this.primaryKeys = keys; } } export { Blueprint, Column }; //# sourceMappingURL=Blueprint.mjs.map