84 lines
3.2 KiB
JavaScript
84 lines
3.2 KiB
JavaScript
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 }; |