# Discalimer seed.ts in root project is a seed for dummy datas # Database Seeding Instructions This document explains how to seed the SIGAP database with sample data. ## Prerequisites - Node.js installed - Required environment variables set (including database and Supabase credentials) - Required data files in place (Excel files, GeoJSON, etc.) ## Running the Seed Script The main seeding script is designed to use both Snaplet and native Prisma operations to populate the database: ```bash # Run the seed script npx tsx seed.ts ``` ## What Gets Seeded The seeding process runs the following operations in sequence: 1. Geographic data (cities, districts, geographic boundaries) 2. Police units (Polres and Polsek locations) 3. Permissions (Role-based access control) 4. Crime categories 5. Crime data (by unit and by type) 6. Crime incidents (by unit and by type) ## Seeding Control By default, the script will not reset your database. To enable database reset before seeding, uncomment the reset lines in `seed.ts`: ```typescript // Uncomment to reset database before seeding // console.log("Resetting database..."); // await seed.$resetDatabase(); // console.log("Database reset complete."); ``` ## Customizing Seeds Each seeder is contained in its own file under `prisma/seeds/`. To customize the seeding behavior, edit the corresponding file: - `geographic.ts` - Seeds geographic data - `units.ts` - Seeds police units - `permission.ts` - Seeds permissions - `crime-category.ts` - Seeds crime categories - `crimes.ts` - Seeds crime data - `crime-incidents.ts` - Seeds crime incidents by unit - `crime-incidents-cbt.ts` - Seeds crime incidents by type ## Performance Optimizations The seeders include several optimizations to handle large datasets: - Chunked batch operations - Automatic retry with smaller batch sizes on failure - Progress monitoring - Throttling to prevent database overload