{"library":"pgzod","title":"pgzod - PostgreSQL to Zod Schema Generator","description":"pgzod is a command-line utility for generating TypeScript-first Zod schemas and types directly from a live PostgreSQL database schema. It aims to synchronize your application's data validation and typing with your database structure, reducing manual effort and potential mismatches. The current stable version is 3.3.0, with minor and patch releases occurring regularly based on feature additions and bug fixes. Key differentiators include its focused integration with PostgreSQL, leveraging Zod for robust validation, and the ability to define different 'strategies' (like `write` or `readwrite`) for schema generation based on usage context. While primarily a CLI tool, it also offers a programmatic API for direct integration into Node.js applications, supporting database connection details via environment variables or configuration objects, making it suitable for both local development and CI/CD pipelines.","language":"javascript","status":"active","last_verified":"Thu Apr 23","install":{"commands":["npm install pgzod"],"cli":{"name":"pgzod","version":null}},"imports":["import { generateZodSchemas } from 'pgzod';","import type { Config } from 'pgzod';","import { getConfig } from 'pgzod';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { generateZodSchemas, type Config } from 'pgzod';\nimport * as path from 'path';\nimport * as fs from 'fs'; // Required for fs.existsSync to check output, but not strictly for pgzod itself.\n\nasync function main() {\n  // Ensure your .env file or environment variables are set:\n  // PGHOST=localhost\n  // PGPORT=5432\n  // PGUSER=postgres\n  // PGPASSWORD=mysecretpassword\n  // PGDATABASE=your_database_name\n  // PGSCHEMA=public\n\n  const outputFilePath = path.join(__dirname, 'generated_schemas.ts');\n\n  const config: Config = {\n    host: process.env.PGHOST ?? 'localhost',\n    port: parseInt(process.env.PGPORT ?? '5432', 10),\n    user: process.env.PGUSER ?? 'postgres',\n    password: process.env.PGPASSWORD ?? 'mysecretpassword',\n    database: process.env.PGDATABASE ?? 'your_database_name',\n    schema: process.env.PGSCHEMA ?? 'public',\n    output: outputFilePath,\n    strategy: 'readwrite', // Options: 'write' or 'readwrite'\n    // customZodTypes: { // Example for mapping custom PostgreSQL types\n    //   'jsonb': 'z.any()',\n    // },\n  };\n\n  try {\n    console.log(`Attempting to generate Zod schemas from DB '${config.database}' (schema: '${config.schema}')...`);\n    await generateZodSchemas(config);\n    console.log(`Successfully generated Zod schemas to: ${outputFilePath}`);\n\n    // To demonstrate usage of generated schemas (requires a 'user' table in your DB)\n    // if (fs.existsSync(outputFilePath)) {\n    //   const { UserReadSchema } = await import(outputFilePath); // Adjust based on your table names\n    //   console.log(\"Example UserReadSchema shape:\", UserReadSchema.shape);\n    // }\n\n  } catch (error) {\n    console.error(\"Failed to generate Zod schemas:\", error);\n    process.exit(1);\n  }\n}\n\nmain();","lang":"typescript","description":"Demonstrates how to programmatically generate Zod schemas from a PostgreSQL database using `pgzod`, connecting via environment variables and specifying an output path and generation strategy. This script requires environment variables for PostgreSQL connection details.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}