{"library":"sequelize-auto","title":"Sequelize Auto Model Generator","description":"Sequelize-Auto is a utility that automates the generation of Sequelize ORM models directly from an existing database schema. It supports various SQL dialects including MySQL/MariaDB, PostgreSQL, SQLite, and MSSQL. The current stable version is 0.8.8, and it is primarily a command-line interface tool, though it also offers programmatic usage. Its main purpose is to reduce manual boilerplate by converting an existing database structure into ready-to-use Sequelize model definitions, including basic column definitions and data types. Users must install Sequelize and the specific database dialect driver separately, as these are no longer direct dependencies.","language":"javascript","status":"active","last_verified":"Wed Apr 22","install":{"commands":["npm install sequelize-auto"],"cli":{"name":"sequelize-auto","version":null}},"imports":["const SequelizeAuto = require('sequelize-auto');","import SequelizeAuto from 'sequelize-auto';","import type { AutoOptions } from 'sequelize-auto';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"const { execSync } = require('child_process');\nconst path = require('path');\n\n// --- Prerequisites ---\n// 1. Install sequelize and a dialect driver (e.g., mysql2):\n//    npm install sequelize mysql2\n// 2. Ensure a database and table exist, e.g., for MySQL:\n//    CREATE DATABASE my_auto_db;\n//    USE my_auto_db;\n//    CREATE TABLE products (\n//      id INT PRIMARY KEY AUTO_INCREMENT,\n//      name VARCHAR(255) NOT NULL,\n//      price DECIMAL(10, 2) DEFAULT 0.00\n//    );\n//    INSERT INTO products (name, price) VALUES ('Laptop', 1200.00);\n\n// --- Configuration ---\nconst outputDir = path.join(__dirname, 'generated_models');\nconst host = process.env.DB_HOST ?? 'localhost';\nconst user = process.env.DB_USER ?? 'root';\nconst password = process.env.DB_PASSWORD ?? 'password'; // !! Use secure methods for passwords in production\nconst database = 'my_auto_db';\nconst dialect = 'mysql';\nconst tableName = 'products';\n\n// Ensure the output directory exists\ntry {\n  execSync(`mkdir -p ${outputDir}`);\n  console.log(`Ensured output directory: ${outputDir}`);\n} catch (e) {\n  console.error('Failed to create output directory:', e.message);\n  process.exit(1);\n}\n\n// --- Run sequelize-auto CLI ---\nconst cliCommand = [\n  'sequelize-auto',\n  `-h ${host}`,\n  `-d ${database}`,\n  `-u ${user}`,\n  `-x ${password}`,\n  `--dialect ${dialect}`,\n  `-o ${outputDir}`,\n  `-t ${tableName}`\n].join(' ');\n\nconsole.log(`\nExecuting CLI command: ${cliCommand}\n`);\n\ntry {\n  const stdout = execSync(cliCommand, { encoding: 'utf8', stdio: 'pipe' });\n  console.log('Sequelize models generated successfully:');\n  console.log(stdout);\n  console.log(`\nCheck the '${outputDir}' directory for generated model files.`);\n\n  // --- Example of programmatic usage (after models are generated) ---\n  console.log('\\n--- Demonstrating programmatic usage of generated models (conceptual) ---');\n  const { Sequelize, DataTypes } = require('sequelize');\n  const sequelize = new Sequelize(database, user, password, {\n    host,\n    dialect,\n    logging: false // Suppress Sequelize SQL logging\n  });\n\n  // Dynamically require the generated model\n  // Note: The actual model file name might vary based on case options (e.g., 'product.js' or 'Product.js')\n  const ProductModel = require(path.join(outputDir, tableName.charAt(0).toUpperCase() + tableName.slice(1))) (sequelize, DataTypes);\n\n  async function fetchProduct() {\n    try {\n      await sequelize.authenticate();\n      console.log('Database connection successful.');\n      const product = await ProductModel.findOne({ where: { name: 'Laptop' } });\n      if (product) {\n        console.log('Found product:', product.toJSON());\n      } else {\n        console.log('Product not found.');\n      }\n    } catch (error) {\n      console.error('Error during database operation:', error);\n    } finally {\n      await sequelize.close();\n      console.log('Database connection closed.');\n    }\n  }\n\n  fetchProduct();\n\n} catch (error) {\n  console.error('\\nFailed to generate Sequelize models:');\n  console.error(error.message);\n  if (error.stderr) {\n    console.error('Stderr:', error.stderr);\n  }\n  process.exit(1);\n}","lang":"javascript","description":"This quickstart demonstrates how to use `sequelize-auto` via its command-line interface to generate Sequelize models from an existing MySQL database table, including setup instructions and a conceptual example of using the generated model programmatically.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}