{"id":40843,"library":"drizzle-fixtures","title":"Drizzle Fixtures","description":"Type-safe test data factories for Drizzle ORM (v1.2.0). Introspects your schema at runtime to automatically generate sensible fixture values with zero configuration. Supports PostgreSQL, MySQL, SQLite, CockroachDB, and SingleStore. Active development with frequent releases. Key differentiators vs @praha/drizzle-factory: automatic value inference, built-in faker.js integration, defineSeeder for DB seeding, and test framework helpers for Vitest/Jest. Peer dependency on drizzle-orm >=0.29.0. Ships TypeScript types.","status":"active","version":"1.2.0","language":"javascript","source_language":"en","source_url":"https://github.com/martinykiriloff/drizzle-fixtures","tags":["javascript","drizzle","drizzle-orm","factory","fixtures","testing","typescript","faker"],"install":[{"cmd":"npm install drizzle-fixtures","lang":"bash","label":"npm"},{"cmd":"yarn add drizzle-fixtures","lang":"bash","label":"yarn"},{"cmd":"pnpm add drizzle-fixtures","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"runtime peer dependency for schema introspection and database operations","package":"drizzle-orm","optional":false},{"reason":"optional dependency for richer generated values","package":"@faker-js/faker","optional":true}],"imports":[{"note":"ESM-only package. CommonJS require() will fail.","wrong":"const { defineFactory } = require('drizzle-fixtures')","symbol":"defineFactory","correct":"import { defineFactory } from 'drizzle-fixtures'"},{"note":"All exports are at the package root. Subpath imports are not supported.","wrong":"import { defineFactory } from 'drizzle-fixtures/defineFactory'","symbol":"defineFactory","correct":"import { defineFactory } from 'drizzle-fixtures'"},{"note":"Also ESM-only. Used for seeding databases with multiple factories.","symbol":"defineSeeder","correct":"import { defineSeeder } from 'drizzle-fixtures'"},{"note":"Only available in Vitest environment. Provides beforeAll/afterAll setup.","symbol":"createVitestHelpers","correct":"import { createVitestHelpers } from 'drizzle-fixtures'"},{"note":"Faker is an optional peer dependency. Import from '@faker-js/faker' directly. drizzle-fixtures auto-detects its presence.","wrong":"import { faker } from 'drizzle-fixtures'","symbol":"faker","correct":"import { faker } from '@faker-js/faker'"}],"quickstart":{"code":"import { defineFactory } from 'drizzle-fixtures';\nimport { users } from './schema';\nimport { db } from './db';\n\n// Define a factory from a Drizzle table schema\nconst userFactory = defineFactory(users);\n\n// Build a user object without DB (InsertUser type)\nconst user = userFactory.build();\n// { id: 1, name: 'name-1', email: 'email-1@example.com', role: 'viewer', ... }\n\n// Build with overrides (fully typed)\nconst admin = userFactory.build({ role: 'admin' });\n\n// Create a user in the database (returns SelectUser)\nconst savedUser = await userFactory.create(db);\n\n// Create multiple records\nconst manyUsers = await userFactory.createMany(db, 5);\n\n// Build with faker.js (if installed)\n// Values become more realistic: names, emails, etc.\nconst richUser = userFactory.buildWithFaker();\n\n// Related records: automatically creates associated rows\nconst postFactory = defineFactory(posts);\nconst postWithUser = await postFactory.use(userFactory).create(db);\n// Also inserts a user row linked by foreign key","lang":"typescript","description":"Shows basic factory setup, build methods, database creation, overrides, multiple records, faker integration, and related record creation using use()."},"warnings":[{"fix":"Use import syntax or switch to dynamic import() if in CommonJS project.","message":"ESM-only package from version 1.0.0. Cannot be used with require().","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Ensure every Drizzle table used with defineFactory has a primary key column defined in schema.","message":"Factory must be associated with a table that has a primary key. Tables without PK will cause runtime errors.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Install @faker-js/faker as devDependency if you intend to use buildWithFaker().","message":"Faker.js integration is auto-detected. If faker is not installed but you call buildWithFaker(), it will silently fall back to default generation (no error).","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Replace seed() calls with defineSeeder({ ... }) and invoke the returned function.","message":"The `seed` method from v0.x has been removed in v1.0.0. Use `defineSeeder` instead.","severity":"deprecated","affected_versions":">=1.0.0"},{"fix":"Wrap test suites with createVitestHelpers(db) to automatically roll back after each test.","message":"create() and createMany() mutate the database and do not roll back automatically. Use test framework helpers (createVitestHelpers, createJestHelpers) for transaction-based cleanup.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'0.29.0':67 'activ':34 'automat':19,43 'built':47 'built-in':46 'cockroachdb':31 'configur':26 'data':7 'db':53 'defineseed':51 'depend':62 'develop':35 'differenti':40 'drizzl':1,10,65,72,74 'drizzle-orm':64,73 'factori':8,76 'faker':80 'faker.js':49 'fixtur':2,22,77 'framework':57 'frequent':37 'generat':20 'helper':58 'infer':45 'integr':50 'introspect':13 'javascript':71 'key':39 'mysql':29 'orm':11,66,75 'peer':61 'postgresql':28 'praha/drizzle-factory':42 'releas':38 'runtim':17 'safe':5 'schema':15 'seed':54 'sensibl':21 'ship':68 'singlestor':33 'sqlite':30 'support':27 'test':6,56,78 'type':4,70 'type-saf':3 'typescript':69,79 'v1.2.0':12 'valu':23,44 'vitest/jest':60 'vs':41 'zero':25","created_at":"2026-06-04T18:49:31.167138+00:00","updated_at":"2026-06-04T18:49:31.167138+00:00","problems":[{"fix":"Add \"type\": \"module\" to package.json, or use dynamic import: const { defineFactory } = await import('drizzle-fixtures');","cause":"drizzle-fixtures is ESM-only; CommonJS require() or non-module Node.js context.","error":"SyntaxError: Cannot use import statement outside a module"},{"fix":"Use named import: import { defineFactory } from 'drizzle-fixtures';","cause":"Incorrect import — possibly importing default instead of named export.","error":"TypeError: defineFactory is not a function"},{"fix":"Add a primary key (e.g., id integer primary key) to your Drizzle table definition.","cause":"Factory table schema lacks a primary key column.","error":"Error: Table must have a primary key to use drizzle-fixtures"},{"fix":"Pass your Drizzle database instance as the first argument: userFactory.create(db);","cause":"Calling create() or createMany() without passing a db instance.","error":"Error: No database provided"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/martinykiriloff/drizzle-fixtures#readme","github":"https://github.com/martinykiriloff/drizzle-fixtures","docs":null,"changelog":null,"pypi":null,"npm":"drizzle-fixtures","openapi_spec":null,"status_page":null,"smithery":null,"categories":["testing"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-04","next_check":"2026-09-02","install_tag":null}}