UNPKG

drizzle-orm

Version:

Drizzle ORM package for SQL databases

77 lines 2.29 kB
import { ColumnBuilder } from "../../column-builder.js"; import { Column } from "../../column.js"; import { entityKind } from "../../entity.js"; import { ForeignKeyBuilder } from "../foreign-keys.js"; import { uniqueKeyName } from "../unique-constraint.js"; class MySqlColumnBuilder extends ColumnBuilder { static [entityKind] = "MySqlColumnBuilder"; foreignKeyConfigs = []; references(ref, actions = {}) { this.foreignKeyConfigs.push({ ref, actions }); return this; } unique(name) { this.config.isUnique = true; this.config.uniqueName = name; return this; } generatedAlwaysAs(as, config) { this.config.generated = { as, type: "always", mode: config?.mode ?? "virtual" }; return this; } /** @internal */ buildForeignKeys(column, table) { return this.foreignKeyConfigs.map(({ ref, actions }) => { return ((ref2, actions2) => { const builder = new ForeignKeyBuilder(() => { const foreignColumn = ref2(); return { columns: [column], foreignColumns: [foreignColumn] }; }); if (actions2.onUpdate) { builder.onUpdate(actions2.onUpdate); } if (actions2.onDelete) { builder.onDelete(actions2.onDelete); } return builder.build(table); })(ref, actions); }); } } class MySqlColumn extends Column { constructor(table, config) { if (!config.uniqueName) { config.uniqueName = uniqueKeyName(table, [config.name]); } super(table, config); this.table = table; } static [entityKind] = "MySqlColumn"; } class MySqlColumnBuilderWithAutoIncrement extends MySqlColumnBuilder { static [entityKind] = "MySqlColumnBuilderWithAutoIncrement"; constructor(name, dataType, columnType) { super(name, dataType, columnType); this.config.autoIncrement = false; } autoincrement() { this.config.autoIncrement = true; this.config.hasDefault = true; return this; } } class MySqlColumnWithAutoIncrement extends MySqlColumn { static [entityKind] = "MySqlColumnWithAutoIncrement"; autoIncrement = this.config.autoIncrement; } export { MySqlColumn, MySqlColumnBuilder, MySqlColumnBuilderWithAutoIncrement, MySqlColumnWithAutoIncrement }; //# sourceMappingURL=common.js.map