UNPKG

cca-migration-generator

Version:

PostgreSQL TypeORM migration generator and schema builder with advanced TypeScript support

158 lines (119 loc) 4.04 kB
# CCA Migration Generator A robust TypeORM migration and table schema generator for PostgreSQL with TypeScript support. ## Overview `cca-migration-generator` is a CLI tool that streamlines the creation of TypeORM migrations and table schemas for PostgreSQL databases. It offers seamless TypeScript integration and automated migration file generation. ## Prerequisites - Node.js >= 14 - PostgreSQL >= 12 - TypeORM >= 0.3.0 - TypeScript >= 4.5 ## Usage ### Basic Commands Generate a new migration: ```bash npx cca-migration-generator CreateUserTable ``` ## Getting Started ### 1. Database Configuration Create a `cca.config.json` file in your project root: ```json { "type": "postgres", "host": "localhost", "port": 5432, "username": "username", "password": "your_password", "database": "your_database" } ``` ### 2. Environment Setup Create a `.env` file with your database configuration: ```env DB_HOST=localhost DB_PORT=5432 DB_USERNAME=your_username DB_PASSWORD=your_password DB_NAME=your_database NODE_ENV=development ``` ### 3. Project Structure Recommended project structure: ``` your-project/ ├── src/ | ├── infrastructure/ | │ ├── database/ | │ │ ├── migrations/ | │ │ │ └── [migration files] | │ │ └── config.ts | │ └── entities/ | │ └── [entity files] ├── cca.config.json └── .env ``` ### 4. DataSource Configuration Create a `config.ts` file for TypeORM configuration: ```typescript // src/database/config.ts export const dataSourceConfig = { type: 'postgres', host: process.env.DB_HOST, port: parseInt(process.env.DB_PORT || '5432'), username: process.env.DB_USERNAME, password: process.env.DB_PASSWORD, database: process.env.DB_NAME, entities: [ // List your entity classes here ], migrations: [ // Path to your migrations folder ], synchronize: false, // Enable only in development logging: true, }; ``` ## Features - Automated TypeORM migration file generation - PostgreSQL schema management - TypeScript support with type definitions - Flexible configuration options - Custom migration templates - Support for complex database relationships - Automatic timestamp handling ## Error Handling ### Common Issues and Solutions #### Configuration Errors - **Config file not found**: Ensure `cca.config.json` exists in your project root - **Invalid configuration**: Verify database credentials in `cca.config.json` or `.env` - **Connection failed**: Check PostgreSQL server status and accessibility #### Migration Errors - **Duplicate migration**: Each migration name must be unique - **Invalid migration path**: Verify migration directory configuration - **Syntax error**: Ensure TypeScript syntax is correct in migration files ## Best Practices ### Migration Management - Keep migrations atomic and focused - Use meaningful, descriptive migration names - Test migrations in development before deploying to production - Never modify existing migrations - Use transactions for complex migrations ### Configuration - Store sensitive data in environment variables - Maintain separate configurations for development and production - Document configuration changes ### Type Safety - Define TypeScript interfaces for entities - Use appropriate column types - Implement enums for predefined values ## Contributing We welcome contributions! Please follow these steps: 1. Fork the repository 2. Create a feature branch 3. Commit your changes 4. Push to your branch 5. Create a Pull Request ## Support - Report issues: [GitHub Issues](https://github.com/MindaugasBaltrunas/cca-generation-migration/issues) - Read docs: [Wiki](hhttps://github.com/MindaugasBaltrunas/cca-generation-migration/wiki) ## License This project is licensed under the MIT License - see the LICENSE file for details.