{"id":42795,"library":"gina-sequelize","title":"Gina Sequelize Migrations","description":"Gina is a CLI tool that auto-generates and runs database migrations based on Sequelize ORM models. It compares your current Sequelize model definitions with the actual database schema and produces migration files to synchronize them. The current stable version is 0.0.16, released infrequently. Key differentiators: automatic migration generation from existing models, supports TypeScript, requires a custom `initializeModels` function. It is designed for projects already using Sequelize and needing an automated migration workflow.","status":"active","version":"0.0.16","language":"javascript","source_language":"en","source_url":"ssh://git@github.com/digital-divas/gina","tags":["javascript","typescript"],"install":[{"cmd":"npm install gina-sequelize","lang":"bash","label":"npm"},{"cmd":"yarn add gina-sequelize","lang":"bash","label":"yarn"},{"cmd":"pnpm add gina-sequelize","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for running TypeScript migration files and the initializeModels function.","package":"ts-node","optional":false}],"imports":[{"note":"The CLI command is 'gina-cli', not 'gina'. Use npx for one-time execution.","wrong":"gina <command>","symbol":"gina-cli","correct":"npx gina-cli <command>"},{"note":"Must be a named export from 'initializeModels.ts', returning a Sequelize instance with models already loaded.","wrong":"module.exports = async function() {}","symbol":"initializeModels","correct":"export async function initializeModels(): Promise<Sequelize> { ... }"},{"note":"TypeScript type for migration objects; exported from the package.","symbol":"Migration","correct":"import { Migration } from 'gina-sequelize'"}],"quickstart":{"code":"// Step 1: Install globally\nnpm install -g gina-sequelize ts-node\n\n// Step 2: Initialize in your project\ncd your-project\nnpx gina-cli init\n\n// Step 3: Edit gina/initializeModels.ts\n// Example:\nimport { Sequelize } from 'sequelize';\nimport { User } from './models/User'; // your model\n\nexport async function initializeModels(): Promise<Sequelize> {\n  const sequelize = new Sequelize('database', 'username', 'password', {\n    host: 'localhost',\n    dialect: 'postgres'\n  });\n  // Load models\n  User.init(sequelize);\n  // ... other models\n  return sequelize;\n}\n\n// Step 4: Generate a migration\nnpx gina-cli generate-migration \"Add user table\"\n\n// Step 5: Run the migration\nnpx gina-cli upgrade","lang":"typescript","description":"Shows full setup: global install, init, editing initializeModels, generating and running a migration."},"warnings":[{"fix":"Install globally: npm install -g gina-sequelize ts-node","message":"Global install is required for CLI usage; using npx gina-sequelize will not work.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Use 'export async function initializeModels()' instead of 'export default async function()'","message":"In version 0.0.16, the initializeModels file must export a named function called 'initializeModels', not a default export.","severity":"breaking","affected_versions":"0.0.16"},{"fix":"Use 'gina-cli' for all commands.","message":"The CLI command is 'gina-cli', not 'gina'. Running 'gina' will fail.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Use ES module syntax and named export.","message":"Using require() to load initializeModels may not work; the package expects an ES module with named export.","severity":"deprecated","affected_versions":">=0.0.10"},{"fix":"Install ts-node globally: npm install -g ts-node","message":"ts-node must be installed alongside gina-sequelize, otherwise migrate commands will fail.","severity":"gotcha","affected_versions":">=0.0.1"},{"fix":"Manually verify and adjust generated migration files before running.","message":"The generated migration files may not handle all Sequelize associations or indexes correctly; manual review advised.","severity":"breaking","affected_versions":"0.0.16"}],"env_vars":null,"search_vec":"'0.0.16':46 'actual':31 'alreadi':69 'auto':11 'auto-gener':10 'autom':75 'automat':51 'base':17 'cli':7 'compar':23 'current':25,42 'custom':61 'databas':15,32 'definit':28 'design':66 'differenti':50 'exist':55 'file':37 'function':63 'generat':12,53 'gina':1,4 'infrequ':48 'initializemodel':62 'javascript':78 'key':49 'migrat':3,16,36,52,76 'model':21,27,56 'need':73 'orm':20 'produc':35 'project':68 'releas':47 'requir':59 'run':14 'schema':33 'sequel':2,19,26,71 'stabl':43 'support':57 'synchron':39 'tool':8 'typescript':58,79 'use':70 'version':44 'workflow':77","created_at":"2026-06-05T16:56:41.794855+00:00","updated_at":"2026-06-05T16:56:41.794855+00:00","problems":[{"fix":"Use 'gina-cli' command","cause":"Using 'gina' instead of 'gina-cli'","error":"gina: command not found"},{"fix":"Ensure file exists at gina/initializeModels.ts and exports a named function 'initializeModels'","cause":"initializeModels.ts not in the correct location or not exported as named function","error":"Cannot find module 'gina/initializeModels'"},{"fix":"Run: npm install -g ts-node","cause":"ts-node not installed globally","error":"ts-node is not recognized"},{"fix":"Use Model.init(sequelize) for each model, not sequelize.define","cause":"initializeModels returns a Sequelize instance without loading models using Model.init()","error":"TypeError: sequelize.define is not a function"}],"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/digital-divas/gina#readme","github":"ssh://git@github.com/digital-divas/gina","docs":null,"changelog":null,"pypi":null,"npm":"gina-sequelize","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}