drizzle-cuid2
Version:
A utility package for generating CUID2 columns in Drizzle ORM
56 lines (52 loc) • 2.2 kB
text/typescript
import { ColumnBuilderBaseConfig, entityKind, MakeColumnConfig, HasDefault, ColumnBaseConfig, ColumnBuilderRuntimeConfig } from 'drizzle-orm';
import { MySqlColumnBuilder, AnyMySqlTable, MySqlColumn } from 'drizzle-orm/mysql-core';
type MySqlCuid2Config = {
length: number;
prefix?: string;
};
type MySqlCuid2BuilderInitial<TName extends string> = Omit<MySqlCuid2Builder<{
name: TName;
dataType: 'string';
columnType: 'MySqlCuid2';
data: string;
driverParam: string;
enumValues: undefined;
}>, 'default' | '$default' | '$defaultFn'>;
declare class MySqlCuid2Builder<T extends ColumnBuilderBaseConfig<'string', 'MySqlCuid2'>> extends MySqlColumnBuilder<T> {
static readonly [entityKind]: string;
private length;
private prefix?;
constructor(name: T['name']);
build<TTableName extends string>(table: AnyMySqlTable<{
name: TTableName;
}>): MySqlCuid2<MakeColumnConfig<T, TTableName>>;
/***
* Creates a random `cuid2` value as the default value for the column.
* The function will be called when the row is inserted, and the returned value will be used as the column value.
*/
defaultRandom(): HasDefault<this>;
/***
* Sets the length of the CUID2 value.
* @param length The length of the CUID2 value (default: 24)
*/
setLength(length: number): this;
/***
* Sets the prefix for the CUID2 value.
* @param prefix The prefix to prepend to the CUID2 value
*/
setPrefix(prefix: string): this;
}
declare class MySqlCuid2<T extends ColumnBaseConfig<'string', 'MySqlCuid2'>> extends MySqlColumn<T> {
static readonly [entityKind]: string;
private length;
private prefix?;
constructor(table: AnyMySqlTable<{
name: string;
}>, config: ColumnBuilderRuntimeConfig<T extends {
$type: infer U;
} ? U : T['data'], MySqlCuid2Config>, length: number, prefix?: string);
getSQLType(): string;
}
declare function cuid2(): MySqlCuid2BuilderInitial<''>;
declare function cuid2<TName extends string>(name: TName): MySqlCuid2BuilderInitial<TName>;
export { MySqlCuid2, MySqlCuid2Builder, type MySqlCuid2BuilderInitial, type MySqlCuid2Config, cuid2 };