UNPKG

drizzle-cuid2

Version:

A utility package for generating CUID2 columns in Drizzle ORM

1 lines 3.04 kB
{"version":3,"sources":["../src/mysql-core/builder.ts","../src/mysql-core/index.ts"],"sourcesContent":["import { createId } from '@paralleldrive/cuid2';\nimport {\n type ColumnBuilderRuntimeConfig,\n entityKind,\n type ColumnBaseConfig,\n type ColumnBuilderBaseConfig,\n type MakeColumnConfig,\n type HasDefault,\n} from 'drizzle-orm';\nimport {\n MySqlColumn,\n MySqlColumnBuilder,\n type AnyMySqlTable,\n} from 'drizzle-orm/mysql-core';\n\nexport type MySqlCuid2BuilderInitial<TName extends string> = Omit<\n MySqlCuid2Builder<{\n name: TName;\n dataType: 'string';\n columnType: 'MySqlCuid2';\n data: string;\n driverParam: string;\n enumValues: undefined;\n }>,\n 'default' | '$default' | '$defaultFn'\n>;\n\nexport class MySqlCuid2Builder<\n T extends ColumnBuilderBaseConfig<'string', 'MySqlCuid2'>\n> extends MySqlColumnBuilder<T> {\n static override readonly [entityKind]: string = 'MySqlCuid2Builder';\n\n constructor(name: T['name']) {\n super(name, 'string', 'MySqlCuid2');\n }\n\n build<TTableName extends string>(\n table: AnyMySqlTable<{ name: TTableName }>\n ): MySqlCuid2<MakeColumnConfig<T, TTableName>> {\n return new MySqlCuid2<MakeColumnConfig<T, TTableName>>(\n table,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n this.config as ColumnBuilderRuntimeConfig<any, any>\n );\n }\n\n /***\n * Creates a random `cuid2` value as the default value for the column.\n * The function will be called when the row is inserted, and the returned value will be used as the column value.\n */\n defaultRandom(): HasDefault<this> {\n this.config.defaultFn = () => createId();\n this.config.hasDefault = true;\n return this as HasDefault<this>;\n }\n}\n\nexport class MySqlCuid2<\n T extends ColumnBaseConfig<'string', 'MySqlCuid2'>\n> extends MySqlColumn<T> {\n static override readonly [entityKind]: string = 'MySqlCuid2';\n\n getSQLType(): string {\n return `varchar(24)`;\n }\n}\n","import { MySqlCuid2Builder, type MySqlCuid2BuilderInitial } from './builder';\n\nexport function cuid2(): MySqlCuid2BuilderInitial<''>;\nexport function cuid2<TName extends string>(\n name: TName\n): MySqlCuid2BuilderInitial<TName>;\nexport function cuid2<TName extends string>(\n name?: TName\n): MySqlCuid2BuilderInitial<TName> {\n return new MySqlCuid2Builder(name ?? ('' as TName));\n}\n\nexport * from './builder';\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB;AAAA,EAEE;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAcA,IAAM,oBAAN,cAEG,mBAAsB;AAAA,EAC9B,QAA0B,UAAU,IAAY;AAAA,EAEhD,YAAY,MAAiB;AAC3B,UAAM,MAAM,UAAU,YAAY;AAAA,EACpC;AAAA,EAEA,MACE,OAC6C;AAC7C,WAAO,IAAI;AAAA,MACT;AAAA;AAAA,MAEA,KAAK;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAkC;AAChC,SAAK,OAAO,YAAY,MAAM,SAAS;AACvC,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACT;AACF;AAEO,IAAM,aAAN,cAEG,YAAe;AAAA,EACvB,QAA0B,UAAU,IAAY;AAAA,EAEhD,aAAqB;AACnB,WAAO;AAAA,EACT;AACF;;;AC3DO,SAAS,MACd,MACiC;AACjC,SAAO,IAAI,kBAAkB,QAAS,EAAY;AACpD;","names":[]}