depo-yonetim/models/store.js

42 lines
1.1 KiB
JavaScript
Raw Normal View History

2026-09-10 08:59:19 +00:00
// Veri depolama katmanı - JSON dosya tabanlı, basit ve tutarlı
const fs = require('fs');
const path = require('path');
const DATA_DIR = path.join(__dirname, '..', 'data');
if (!fs.existsSync(DATA_DIR)) fs.mkdirSync(DATA_DIR, { recursive: true });
// Koleksiyon dosyasının yolunu hesapla
function dosyaYolu(koleksiyon) {
return path.join(DATA_DIR, koleksiyon + '.json');
}
// Koleksiyon varsa okur, yoksa boş diziye başlar
function oku(koleksiyon) {
const yol = dosyaYolu(koleksiyon);
if (!fs.existsSync(yol)) return [];
try {
return JSON.parse(fs.readFileSync(yol, 'utf8'));
} catch (e) {
return [];
}
}
// Koleksiyonu diske yazar
function yaz(koleksiyon, veri) {
const yol = dosyaYolu(koleksiyon);
fs.writeFileSync(yol, JSON.stringify(veri, null, 2), 'utf8');
}
// Yeni benzersiz kimlik üretir
function yeniId(koleksiyon) {
const mevcut = oku(koleksiyon);
return mevcut.length ? Math.max(...mevcut.map(x => x.id)) + 1 : 1;
}
// Bir koleksiyonda id'ye göre kaydı bulur
function bulKoleksiyonda(koleksiyon, id) {
return oku(koleksiyon).find(x => x.id === id);
}
module.exports = { oku, yaz, yeniId, bulKoleksiyonda, DATA_DIR };