Files
UAS-SIG/seeders/seed_manager.js
T

73 lines
2.8 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');
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
*/
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
)`);
// 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 };