feat : first commit
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
const db = require('../config/database');
|
||||
|
||||
// Menyemai data awal rumah ibadah ke dalam tabel basis data
|
||||
const semai_data_rumah_ibadah = () => {
|
||||
// Kumpulan data statis yang merepresentasikan 6 agama resmi
|
||||
const daftar_rumah_ibadah = [
|
||||
{
|
||||
nama_tempat: 'Masjid Raya Mujahidin',
|
||||
jenis_agama: 'Islam',
|
||||
lat: -0.0427,
|
||||
lng: 109.3425,
|
||||
alamat: 'Jl. Jenderal Ahmad Yani'
|
||||
},
|
||||
{
|
||||
nama_tempat: 'Gereja Katedral Santo Yosef',
|
||||
jenis_agama: 'Katolik',
|
||||
lat: -0.0355,
|
||||
lng: 109.3468,
|
||||
alamat: 'Jl. Pattimura'
|
||||
},
|
||||
{
|
||||
nama_tempat: 'Gereja HKBP',
|
||||
jenis_agama: 'Kristen',
|
||||
lat: -0.0381,
|
||||
lng: 109.3361,
|
||||
alamat: 'Jl. Imam Bonjol'
|
||||
},
|
||||
{
|
||||
nama_tempat: 'Pura Giripati Mulawarman',
|
||||
jenis_agama: 'Hindu',
|
||||
lat: -0.0556,
|
||||
lng: 109.3499,
|
||||
alamat: 'Jl. Adi Sucipto'
|
||||
},
|
||||
{
|
||||
nama_tempat: 'Vihara Bodhisatva Karaniya Metta',
|
||||
jenis_agama: 'Buddha',
|
||||
lat: -0.0225,
|
||||
lng: 109.3323,
|
||||
alamat: 'Jl. Kapten Marsan'
|
||||
},
|
||||
{
|
||||
nama_tempat: 'Makin Kelenteng',
|
||||
jenis_agama: 'Konghucu',
|
||||
lat: -0.0289,
|
||||
lng: 109.3375,
|
||||
alamat: 'Jl. Gajah Mada'
|
||||
}
|
||||
];
|
||||
|
||||
db.serialize(() => {
|
||||
// Praktik penanganan kesalahan otomatis: Memulai transaksi untuk memastikan semua data masuk secara bersamaan, atau dibatalkan seluruhnya jika terjadi satu kegagalan
|
||||
db.run('BEGIN TRANSACTION');
|
||||
|
||||
// Praktik keamanan: Menyiapkan query dengan parameter terikat untuk mencegah injeksi data berbahaya
|
||||
const perintah_insert = db.prepare(`INSERT INTO RUMAH_IBADAH (nama_tempat, jenis_agama, lat, lng, alamat) VALUES (?, ?, ?, ?, ?)`);
|
||||
|
||||
// Baris kompleks: Melakukan perulangan pada array data, lalu mengeksekusi perintah SQL (statement.run) secara asinkron untuk setiap objek rumah ibadah. Parameter yang dikirimkan dipetakan secara berurutan sesuai dengan tanda tanya pada query di atas.
|
||||
daftar_rumah_ibadah.forEach((rumah) => {
|
||||
perintah_insert.run([rumah.nama_tempat, rumah.jenis_agama, rumah.lat, rumah.lng, rumah.alamat], (err) => {
|
||||
if (err) {
|
||||
console.error(`Gagal memasukkan data ${rumah.nama_tempat}:`, err.message);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Menyelesaikan penyiapan statement agar memori peladen dibebaskan
|
||||
perintah_insert.finalize();
|
||||
|
||||
// Mengunci seluruh perubahan ke dalam basis data SQLite
|
||||
db.run('COMMIT', (err) => {
|
||||
if (err) {
|
||||
console.error('Kegagalan transaksi basis data:', err.message);
|
||||
process.exit(1);
|
||||
} else {
|
||||
console.log('Proses penyemaian data Rumah Ibadah berhasil diselesaikan.');
|
||||
// Menghentikan eksekusi skrip karena proses seeder berjalan terpisah dari peladen utama
|
||||
process.exit(0);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
semai_data_rumah_ibadah();
|
||||
@@ -0,0 +1,32 @@
|
||||
const bcrypt = require('bcrypt');
|
||||
const db = require('../config/database');
|
||||
|
||||
// Menggenerasikan data akun administrator baru dengan pengacakan kata sandi aman
|
||||
async function buat_akun_admin_seeder() {
|
||||
const username_admin = 'admin_dinsos';
|
||||
const password_murni = 'adminrahasia';
|
||||
|
||||
try {
|
||||
// Baris kompleks: Kita menerapkan metode saltRounds sebesar 10 untuk menghasilkan nilai salt unik menggunakan bcrypt. Fungsi ini mengacak kata sandi murni menjadi string hash tak terbaca sebelum disimpan ke SQLite untuk mengantisipasi kebocoran database.
|
||||
const salt_rounds = 10;
|
||||
const password_terhash = await bcrypt.hash(password_murni, salt_rounds);
|
||||
|
||||
const kueri_insert = `INSERT INTO ADMIN (username, password) VALUES (?, ?)`;
|
||||
|
||||
db.run(kueri_insert, [username_admin, password_terhash], function(error_sql) {
|
||||
if (error_sql) {
|
||||
console.error('Gagal menyisipkan akun admin:', error_sql.message);
|
||||
process.exit(1);
|
||||
}
|
||||
console.log(`Akun admin berhasil dibuat! Username: ${username_admin}`);
|
||||
process.exit(0);
|
||||
});
|
||||
|
||||
} catch (error_sistem) {
|
||||
console.error('Terjadi kegagalan enkripsi internal:', error_sistem.message);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Menjalankan fungsi seeder otomatis saat berkas dieksekusi di terminal
|
||||
buat_akun_admin_seeder();
|
||||
@@ -0,0 +1,32 @@
|
||||
const bcrypt = require('bcrypt');
|
||||
const db = require('../config/database');
|
||||
|
||||
// Menggenerasikan data akun petugas baru dengan pengacakan kata sandi aman
|
||||
async function buat_akun_petugas_seeder() {
|
||||
const username_petugas = 'petugas_pontianak';
|
||||
const password_murni = 'rahasia123';
|
||||
|
||||
try {
|
||||
// Baris kompleks: Kita menerapkan algoritma KDF Bcrypt dengan salt rounds 10 untuk menyamarkan kata sandi murni menjadi hash acak sebelum disimpan ke SQLite guna memenuhi standar kepatuhan keamanan data industri tanpa membebani memori server secara berlebihan.
|
||||
const salt_rounds = 10;
|
||||
const password_terhash = await bcrypt.hash(password_murni, salt_rounds);
|
||||
|
||||
const kueri_insert = `INSERT INTO PETUGAS (username, password) VALUES (?, ?)`;
|
||||
|
||||
db.run(kueri_insert, [username_petugas, password_terhash], function(error_sql) {
|
||||
if (error_sql) {
|
||||
console.error('Gagal menyisipkan akun petugas:', error_sql.message);
|
||||
process.exit(1);
|
||||
}
|
||||
console.log(`Akun petugas berhasil dibuat! Username: ${username_petugas}`);
|
||||
process.exit(0);
|
||||
});
|
||||
|
||||
} catch (error_sistem) {
|
||||
console.error('Terjadi kegagalan enkripsi internal:', error_sistem.message);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Menjalankan fungsi seeder otomatis saat berkas dieksekusi di terminal
|
||||
buat_akun_petugas_seeder();
|
||||
Reference in New Issue
Block a user