{"library":"sql-fixtures","title":"SQL Fixtures","type":"library","description":"sql-fixtures is a JavaScript library designed to populate SQL databases with structured test data, commonly referred to as 'fixtures'. It automatically handles foreign key dependencies, making it suitable for integration testing and generating dummy data for development environments. The current stable version is 1.0.4, last published approximately five years ago. The package maintainer has stated it is 'dormant but stable,' indicating a maintenance-only release cadence where new features are not expected, but critical issues will be addressed. Internally, it leverages the `knex` SQL query builder, supporting PostgreSQL, MySQL, MariaDB, and SQLite. Its key differentiator is the ability to define data specifications in a simple JavaScript object format and have the library intelligently insert rows, resolving dependencies to ensure data integrity during population.","language":"javascript","status":"maintenance","last_verified":"Wed Apr 22","install":{"commands":["npm install sql-fixtures"],"cli":null},"imports":["const sqlFixtures = require('sql-fixtures');","const { create } = require('sql-fixtures');"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":null,"github":"https://github.com/city41/node-sql-fixtures","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/sql-fixtures","openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"const sqlFixtures = require('sql-fixtures');\nconst Knex = require('knex');\n\n// Ensure you have a running PostgreSQL database and 'pg' driver installed (npm install pg)\n// For a real application, use environment variables for sensitive data.\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: process.env.DB_HOST || 'localhost',\n    user: process.env.DB_USER || 'testuser',\n    password: process.env.DB_PASSWORD || 'testpassword',\n    database: process.env.DB_NAME || 'testdb',\n    port: process.env.DB_PORT ? parseInt(process.env.DB_PORT) : 5432\n  }\n};\n\nconst knex = Knex(dbConfig);\n\nconst dataSpec = {\n  users: [\n    { id: 1, username: 'alice', email: 'alice@example.com' },\n    { id: 2, username: 'bob', email: 'bob@example.com' }\n  ],\n  posts: [\n    { id: 101, title: 'First Post', content: 'Lorem ipsum...', author_id: '@user->id (id=1)' },\n    { id: 102, title: 'Second Post', content: 'Dolor sit amet...', author_id: '@user->id (id=2)' }\n  ]\n};\n\nasync function runFixtures() {\n  try {\n    // Ensure tables exist before inserting data\n    await knex.schema.dropTableIfExists('posts');\n    await knex.schema.dropTableIfExists('users');\n    await knex.schema.createTable('users', table => {\n      table.integer('id').primary();\n      table.string('username').notNullable().unique();\n      table.string('email').notNullable().unique();\n    });\n    await knex.schema.createTable('posts', table => {\n      table.integer('id').primary();\n      table.string('title').notNullable();\n      table.text('content');\n      table.integer('author_id').unsigned().notNullable();\n      table.foreign('author_id').references('id').inTable('users');\n    });\n\n    console.log('Database schema created/reset.');\n\n    const result = await sqlFixtures.create(dbConfig, dataSpec);\n    console.log('Fixtures inserted successfully:');\n    console.log(JSON.stringify(result, null, 2));\n    console.log('Users inserted:', result.users.length);\n    console.log('Posts inserted:', result.posts.length);\n\n  } catch (err) {\n    console.error('Error running fixtures:', err);\n  } finally {\n    await knex.destroy();\n  }\n}\n\nrunFixtures();","lang":"javascript","description":"This quickstart demonstrates how to use `sql-fixtures` to define and insert data into a PostgreSQL database, including handling foreign key relationships. It first sets up a basic schema using `knex` and then populates it with users and posts.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}