@devbro/sql-generator
Version:
generic sql generator
102 lines • 2.34 kB
JavaScript
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