{"version":3,"sources":["../src/mysql-core/builder.ts","../src/mysql-core/index.ts"],"sourcesContent":["import { init } 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 MySqlCuid2Config = {\n  length: number;\n  prefix?: string;\n};\n\nconst createId = (length: number) => init({ length });\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  private length = 24;\n  private prefix?: string;\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      this.config as ColumnBuilderRuntimeConfig<\n        T extends { $type: infer U } ? U : T['data'],\n        MySqlCuid2Config\n      >,\n      this.length,\n      this.prefix\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 = () => {\n      const id = createId(this.length)();\n      return this.prefix ? `${this.prefix}${id}` : id;\n    };\n    this.config.hasDefault = true;\n    return this as HasDefault<this>;\n  }\n\n  /***\n   * Sets the length of the CUID2 value.\n   * @param length The length of the CUID2 value (default: 24)\n   */\n  setLength(length: number): this {\n    this.length = length;\n    return this;\n  }\n\n  /***\n   * Sets the prefix for the CUID2 value.\n   * @param prefix The prefix to prepend to the CUID2 value\n   */\n  setPrefix(prefix: string): this {\n    this.prefix = prefix;\n    return 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  private length: number;\n  private prefix?: string;\n\n  constructor(\n    table: AnyMySqlTable<{ name: string }>,\n    config: ColumnBuilderRuntimeConfig<\n      T extends { $type: infer U } ? U : T['data'],\n      MySqlCuid2Config\n    >,\n    length: number,\n    prefix?: string\n  ) {\n    super(table, config);\n    this.length = length;\n    this.prefix = prefix;\n  }\n\n  getSQLType(): string {\n    const totalLength = this.prefix ? this.length + this.prefix.length : this.length;\n    return `varchar(${totalLength})`;\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,YAAY;AACrB;AAAA,EAEE;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAOP,IAAM,WAAW,CAAC,WAAmB,KAAK,EAAE,OAAO,CAAC;AAc7C,IAAM,oBAAN,cAEG,mBAAsB;AAAA,EAC9B,QAA0B,UAAU,IAAY;AAAA,EACxC,SAAS;AAAA,EACT;AAAA,EAER,YAAY,MAAiB;AAC3B,UAAM,MAAM,UAAU,YAAY;AAAA,EACpC;AAAA,EAEA,MACE,OAC6C;AAC7C,WAAO,IAAI;AAAA,MACT;AAAA,MACA,KAAK;AAAA,MAIL,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,gBAAkC;AAChC,SAAK,OAAO,YAAY,MAAM;AAC5B,YAAM,KAAK,SAAS,KAAK,MAAM,EAAE;AACjC,aAAO,KAAK,SAAS,GAAG,KAAK,MAAM,GAAG,EAAE,KAAK;AAAA,IAC/C;AACA,SAAK,OAAO,aAAa;AACzB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,QAAsB;AAC9B,SAAK,SAAS;AACd,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,UAAU,QAAsB;AAC9B,SAAK,SAAS;AACd,WAAO;AAAA,EACT;AACF;AAEO,IAAM,aAAN,cAEG,YAAe;AAAA,EACvB,QAA0B,UAAU,IAAY;AAAA,EACxC;AAAA,EACA;AAAA,EAER,YACE,OACA,QAIA,QACA,QACA;AACA,UAAM,OAAO,MAAM;AACnB,SAAK,SAAS;AACd,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,aAAqB;AACnB,UAAM,cAAc,KAAK,SAAS,KAAK,SAAS,KAAK,OAAO,SAAS,KAAK;AAC1E,WAAO,WAAW,WAAW;AAAA,EAC/B;AACF;;;AC9GO,SAAS,MACd,MACiC;AACjC,SAAO,IAAI,kBAAkB,QAAS,EAAY;AACpD;","names":[]}