Agent skill

DB Migration Generator

Generator สำหรับสร้าง database migration files พร้อม up/down scripts, validation และ rollback safety

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/db-migration-generator

SKILL.md

DB Migration Generator

Overview

สร้าง database migration files อัตโนมัติจาก schema changes พร้อม validation, rollback scripts และ safety checks

Why This Matters

  • Safety: Auto-generate rollback scripts
  • Consistency: Standard migration format
  • Validation: Check before apply
  • Documentation: Auto-document changes

Quick Start

bash
# Generate migration
npx generate-migration add_users_table

# Output:
migrations/
└── 20240116120000_add_users_table.ts
    ├── up()    # Apply migration
    └── down()  # Rollback migration

Generated Migration

typescript
// 20240116120000_add_users_table.ts
export async function up(db: Database) {
  await db.schema.createTable('users', (table) => {
    table.uuid('id').primary();
    table.string('email').unique().notNullable();
    table.string('name').notNullable();
    table.timestamps(true, true);
  });
  
  await db.schema.createIndex('users', 'email');
}

export async function down(db: Database) {
  await db.schema.dropTable('users');
}

From Schema Diff

bash
# Generate from Prisma schema changes
npx generate-migration --from-prisma

# Detects:
- New tables
- New columns
- Index changes
- Constraint changes

Safety Checks

typescript
// Auto-generated safety checks
export async function validate(db: Database) {
  // Check table doesn't exist
  const exists = await db.schema.hasTable('users');
  if (exists) {
    throw new Error('Table users already exists');
  }
  
  // Check dependencies
  // Check data integrity
}

Summary

DB Migration Generator: สร้าง migrations อัตโนมัติ

Features:

  • Up/down scripts
  • Rollback safety
  • Validation
  • From schema diff

Usage:

bash
npx generate-migration add_users_table
npm run migrate

Didn't find tool you were looking for?

Be as detailed as possible for better results