const sqlite3 = require('sqlite3').verbose(); const path = require('path'); // Mengimpor fungsi seeder asli bawaan milik Anda const seed_admin = require('./seed_admin'); const seed_petugas = require('./seed_petugas'); // Jalur absolut database yang terhubung langsung ke Persistent Storage Coolify const db_path = '/app/data/database_baru.sqlite'; /** * Mengatur jalannya proses inisialisasi tabel dan penanaman kredensial master */ async function inisialisasi_dan_seeding() { const db = new sqlite3.Database(db_path); return new Promise((resolve, reject) => { db.serialize(async () => { try { // 1. Memastikan tabel master yang dibutuhkan sistem Express terbentuk sempurna db.run(`CREATE TABLE IF NOT EXISTS ADMIN ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE, password TEXT )`); db.run(`CREATE TABLE IF NOT EXISTS PETUGAS ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE, password TEXT )`); db.run(`CREATE TABLE IF NOT EXISTS MUSTAHIK ( id INTEGER PRIMARY KEY AUTOINCREMENT, nik TEXT UNIQUE, nama_kk TEXT, no_kk TEXT, jumlah_tanggungan INTEGER, status_validasi TEXT DEFAULT 'Pending', lat REAL, lng REAL, luas_lantai_per_kapita TEXT, material_lantai TEXT, material_dinding TEXT, fasilitas_sanitasi TEXT, sumber_air_minum TEXT, sumber_penerangan TEXT, pekerjaan_utama TEXT, pendapatan_bulanan REAL, frekuensi_makan TEXT, kepemilikan_aset TEXT )`); db.run(`CREATE TABLE IF NOT EXISTS RUMAH_IBADAH ( id INTEGER PRIMARY KEY AUTOINCREMENT, nama_tempat TEXT, agama TEXT, lat REAL, lng REAL, alamat TEXT )`); try { db.run("ALTER TABLE MUSTAHIK ADD COLUMN agama TEXT"); } catch (e) {} try { db.run("ALTER TABLE MUSTAHIK ADD COLUMN id_rumah_ibadah INTEGER"); } catch (e) {} // 2. Mengeksekusi modul fungsi seeder bawaan milik Anda secara berurutan console.log('Memulai penanaman data kredensial...'); // Catatan: Pastikan file seeder Anda mengekspor fungsi (contoh: module.exports = function...) if (typeof seed_admin === 'function') await seed_admin(db); if (typeof seed_petugas === 'function') await seed_petugas(db); if (typeof rumah_ibadah_seeder === 'function') await rumah_ibadah_seeder(db); resolve(); } catch (err) { reject(err); } finally { db.close(); } }); }); } module.exports = { inisialisasi_dan_seeding };