feat : fix bug

This commit is contained in:
unknown
2026-06-09 13:58:36 +07:00
parent 368492d2de
commit b02b28b0c0
+29 -26
View File
@@ -4,13 +4,13 @@ const path = require('path');
// Mengimpor fungsi seeder asli bawaan milik Anda
const seed_admin = require('./seed_admin');
const seed_petugas = require('./seed_petugas');
const rumah_ibadah_seeder = require('./rumah_ibadah_seeder');
// 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
* Mengatur jalannya proses inisialisasi tabel, migrasi kolom, dan penanaman data master
*/
async function inisialisasi_dan_seeding() {
const db = new sqlite3.Database(db_path);
@@ -18,7 +18,7 @@ async function inisialisasi_dan_seeding() {
return new Promise((resolve, reject) => {
db.serialize(async () => {
try {
// 1. Memastikan tabel master yang dibutuhkan sistem Express terbentuk sempurna
// 1. Memastikan tabel dasar terbuat dengan sempurna
db.run(`CREATE TABLE IF NOT EXISTS ADMIN (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE,
@@ -39,18 +39,9 @@ async function inisialisasi_dan_seeding() {
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
lng REAL
)`);
db.run(`CREATE TABLE IF NOT EXISTS RUMAH_IBADAH (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nama_tempat TEXT,
@@ -60,22 +51,34 @@ async function inisialisasi_dan_seeding() {
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. Baris Kompleks: Melakukan pemeriksaan skema internal tabel MUSTAHIK secara asinkron menggunakan perintah PRAGMA. Hasil pemindaian berupa array objek kolom diverifikasi terlebih dahulu guna menghindari eksekusi ganda perintah ALTER TABLE yang berpotensi merusak konsistensi biner SQLite.
db.all(`PRAGMA table_info(MUSTAHIK)`, [], async (err_pragma, kolom_kolom) => {
if (err_pragma) {
console.error("Gagal membaca struktur tabel via PRAGMA:", err_pragma.message);
return;
}
// 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);
const sudah_ada_agama = kolom_kolom.some(k => k.name === 'agama');
const sudah_ada_pangkalan = kolom_kolom.some(k => k.name === 'id_rumah_ibadah');
if (!sudah_ada_agama) {
db.run("ALTER TABLE MUSTAHIK ADD COLUMN agama TEXT");
}
if (!sudah_ada_pangkalan) {
db.run("ALTER TABLE MUSTAHIK ADD COLUMN id_rumah_ibadah INTEGER");
}
// 3. Mengeksekusi seluruh fungsi seeder secara berurutan setelah penjaminan kolom selesai
console.log('Memulai sinkronisasi penanaman data master...');
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();
});
resolve();
} catch (err) {
reject(err);
} finally {
db.close();
}
});
});