Registry / database / drizzle-cuid2

drizzle-cuid2

JSON →
library2.2.0jsnpmunverified

A utility package for generating CUID2 columns in Drizzle ORM (version 2.2.0). It provides a drop-in replacement for auto-increment or UUID primary keys using the collision-resistant CUID2 format. The package supports PostgreSQL, MySQL, and SQLite, and allows customizing CUID2 length and prefix. Requires drizzle-orm >=0.28.3. Differentiators: simpler API than raw cuid2 integration, database-specific functions (cuid2 for each dialect) and generic aliases (pgCuid2, mysqlCuid2, sqliteCuid2) for consistency.

npm install drizzle-cuid2
INSTALL
IMPORT
SIG · DRIZZLE-CUID2
D
drizzle-cuid2
databasejavascriptv2.2.0
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

cuid2
import { cuid2 } from 'drizzle-cuid2/postgres';
import { cuid2 } from 'drizzle-cuid2';
cuid2 is exported from dialect-specific paths: /postgres, /mysql, /sqlite. A generic import from the root does not exist.
pgCuid2
import { pgCuid2 } from 'drizzle-cuid2';
import { cuid2 } from 'drizzle-cuid2/postgres';
pgCuid2 is available as a named export from the root for convenience. Equivalent to cuid2 from 'drizzle-cuid2/postgres'.
mysqlCuid2
import { mysqlCuid2 } from 'drizzle-cuid2';
import { cuid2 } from 'drizzle-cuid2/mysql';
mysqlCuid2 is a root-level alias for the MySQL dialect function.
sqliteCuid2
import { sqliteCuid2 } from 'drizzle-cuid2';
import { cuid2 } from 'drizzle-cuid2/sqlite';
sqliteCuid2 is a root-level alias for the SQLite dialect function.

Defines two PostgreSQL tables (users and posts) using CUID2 primary keys with default random generation and a foreign key reference.

import { pgTable } from 'drizzle-orm/pg-core'; import { cuid2 } from 'drizzle-cuid2/postgres'; export const users = pgTable('users', { id: cuid2('id').defaultRandom().primaryKey(), name: text('name').notNull(), }); export const posts = pgTable('posts', { id: cuid2('id').defaultRandom().primaryKey(), userId: cuid2('user_id') .notNull() .references(() => users.id), title: text('title').notNull(), });
Debug
Known issues
gotchaImport from dialect-specific path or use root-level alias; there is no bare 'cuid2' export from the root package.
fix
Use either `import { cuid2 } from 'drizzle-cuid2/postgres'` or `import { pgCuid2 } from 'drizzle-cuid2'`.
affects: >=2.0.0
gotchaThe `cuid2` function returns a column definition, not a default value. You must chain `.defaultRandom()` if you want automatic CUID2 generation.
fix
Always call `.defaultRandom()` on the returned column: `cuid2('id').defaultRandom()`.
affects: >=1.0.0
deprecatedUsing `cuid2` without `.defaultRandom()` will not generate a default value and may cause errors when inserting records without an ID.
fix
Add `.defaultRandom()` to enable automatic CUID2 generation.
affects: >=2.0.0
gotchaThe package requires `drizzle-orm` >= 0.28.3. Older versions of drizzle-orm may not work correctly.
fix
Ensure your project has drizzle-orm version 0.28.3 or higher.
affects: >=2.0.0
Errors
Common errors & fixes
Cannot find module 'drizzle-cuid2' or its corresponding type declarations.
Import path is incorrect – trying to import from 'drizzle-cuid2' without a subpath.
fix
Use a subpath like 'drizzle-cuid2/postgres' or import a named alias like 'pgCuid2' from 'drizzle-cuid2'.
TypeError: cuid2(...).defaultRandom is not a function
Missing parentheses – forgot to call cuid2 with a column name.
fix
Correct usage: `cuid2('id').defaultRandom()` (note the parentheses after cuid2).
Property 'defaultRandom' does not exist on type 'Column<...>'
Using an older version of drizzle-orm (<0.28.3) that doesn't support defaultRandom on custom columns.
fix
Upgrade drizzle-orm to >=0.28.3.
Upgrade
Version history
2.2.0latest on npm
Audit
Dependencies
drizzle-ormrequiredpeer dependency required for table definition and column types
Agent activity
11 hits · last 30 days
node
10
Resources
drizzle-cuid2 — npm install drizzle-cuid2 · libregistry