@eristack/entity-id
Version:
UUID v7 entity identifiers — sortable, parseable, Drizzle column helper
40 lines (39 loc) • 1.18 kB
JavaScript
import {
generateEntityId
} from "../chunk-7V2KY5JP.js";
// src/drizzle/column.ts
import { uuid } from "drizzle-orm/pg-core";
import { char as mysqlChar } from "drizzle-orm/mysql-core";
import { text } from "drizzle-orm/sqlite-core";
function pgsqlEntityIdColumn(sqlName) {
return uuid(sqlName).$defaultFn(() => generateEntityId());
}
function mysqlEntityIdColumn(sqlName) {
return mysqlChar(sqlName, { length: 36 }).$defaultFn(() => generateEntityId());
}
function sqliteEntityIdColumn(sqlName) {
return text(sqlName).$defaultFn(() => generateEntityId());
}
function entityIdColumn(dialect, name, options) {
const sqlName = options?.sqlName ?? name;
switch (dialect) {
case "pgsql":
return pgsqlEntityIdColumn(sqlName);
case "mysql":
return mysqlEntityIdColumn(sqlName);
case "sqlite":
return sqliteEntityIdColumn(sqlName);
default: {
const _exhaustive = dialect;
throw new Error(`Unsupported dialect: ${String(_exhaustive)}`);
}
}
}
function entityIdPgColumn(name, options) {
return entityIdColumn("pgsql", name, options);
}
export {
entityIdColumn,
entityIdPgColumn
};
//# sourceMappingURL=index.js.map