mirror of
https://github.com/RayLabsHQ/gitea-mirror.git
synced 2025-12-06 03:26:44 +03:00
2.8 KiB
2.8 KiB
Drizzle Kit Migration Guide
This project now uses Drizzle Kit for database migrations, providing better schema management and migration tracking.
Overview
- Database: SQLite (with preparation for future PostgreSQL migration)
- ORM: Drizzle ORM with Drizzle Kit for migrations
- Schema Location:
/src/lib/db/schema.ts - Migrations Folder:
/drizzle - Configuration:
/drizzle.config.ts
Available Commands
Database Management
bun run init-db- Initialize database with all migrationsbun run check-db- Check database status and recent migrationsbun run reset-users- Remove all users and related databun run cleanup-db- Remove database files
Drizzle Kit Commands
bun run db:generate- Generate new migration files from schema changesbun run db:migrate- Apply pending migrations to databasebun run db:push- Push schema changes directly (development)bun run db:pull- Pull schema from databasebun run db:check- Check for migration issuesbun run db:studio- Open Drizzle Studio for database browsing
Making Schema Changes
- Update Schema: Edit
/src/lib/db/schema.ts - Generate Migration: Run
bun run db:generate - Review Migration: Check the generated SQL in
/drizzlefolder - Apply Migration: Run
bun run db:migrateor restart the application
Migration Process
The application automatically runs migrations on startup:
- Checks for pending migrations
- Creates migrations table if needed
- Applies all pending migrations in order
- Tracks migration history
Schema Organization
Tables
users- User authentication and accountsconfigs- GitHub/Gitea configurationsrepositories- Repository mirror trackingorganizations- GitHub organizationsmirror_jobs- Job tracking with resilienceevents- Real-time event notifications
Indexes
All performance-critical indexes are automatically created:
- User lookups
- Repository status queries
- Organization filtering
- Job tracking
- Event channels
Future PostgreSQL Migration
The setup is designed for easy PostgreSQL migration:
- Update
drizzle.config.ts:
export default defineConfig({
dialect: "postgresql",
schema: "./src/lib/db/schema.ts",
out: "./drizzle",
dbCredentials: {
connectionString: process.env.DATABASE_URL,
},
});
- Update connection in
/src/lib/db/index.ts - Generate new migrations:
bun run db:generate - Apply to PostgreSQL:
bun run db:migrate
Troubleshooting
Migration Errors
- Check
/drizzlefolder for migration files - Verify database permissions
- Review migration SQL for conflicts
Schema Conflicts
- Use
bun run db:checkto identify issues - Review generated migrations before applying
- Keep schema.ts as single source of truth