UNPKG

drizzle-orm

Version:

Drizzle ORM package for SQL databases

131 lines 4.25 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var column_builder_exports = {}; __export(column_builder_exports, { ColumnBuilder: () => ColumnBuilder }); module.exports = __toCommonJS(column_builder_exports); var import_entity = require("./entity.cjs"); class ColumnBuilder { static [import_entity.entityKind] = "ColumnBuilder"; config; constructor(name, dataType, columnType) { this.config = { name, keyAsName: name === "", notNull: false, default: void 0, hasDefault: false, primaryKey: false, isUnique: false, uniqueName: void 0, uniqueType: void 0, dataType, columnType, generated: void 0 }; } /** * Changes the data type of the column. Commonly used with `json` columns. Also, useful for branded types. * * @example * ```ts * const users = pgTable('users', { * id: integer('id').$type<UserId>().primaryKey(), * details: json('details').$type<UserDetails>().notNull(), * }); * ``` */ $type() { return this; } /** * Adds a `not null` clause to the column definition. * * Affects the `select` model of the table - columns *without* `not null` will be nullable on select. */ notNull() { this.config.notNull = true; return this; } /** * Adds a `default <value>` clause to the column definition. * * Affects the `insert` model of the table - columns *with* `default` are optional on insert. * * If you need to set a dynamic default value, use {@link $defaultFn} instead. */ default(value) { this.config.default = value; this.config.hasDefault = true; return this; } /** * Adds a dynamic default value to the column. * The function will be called when the row is inserted, and the returned value will be used as the column value. * * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`. */ $defaultFn(fn) { this.config.defaultFn = fn; this.config.hasDefault = true; return this; } /** * Alias for {@link $defaultFn}. */ $default = this.$defaultFn; /** * Adds a dynamic update value to the column. * The function will be called when the row is updated, and the returned value will be used as the column value if none is provided. * If no `default` (or `$defaultFn`) value is provided, the function will be called when the row is inserted as well, and the returned value will be used as the column value. * * **Note:** This value does not affect the `drizzle-kit` behavior, it is only used at runtime in `drizzle-orm`. */ $onUpdateFn(fn) { this.config.onUpdateFn = fn; this.config.hasDefault = true; return this; } /** * Alias for {@link $onUpdateFn}. */ $onUpdate = this.$onUpdateFn; /** * Adds a `primary key` clause to the column definition. This implicitly makes the column `not null`. * * In SQLite, `integer primary key` implicitly makes the column auto-incrementing. */ primaryKey() { this.config.primaryKey = true; this.config.notNull = true; return this; } /** @internal Sets the name of the column to the key within the table definition if a name was not given. */ setName(name) { if (this.config.name !== "") return; this.config.name = name; } } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { ColumnBuilder }); //# sourceMappingURL=column-builder.cjs.map