perf: DT detaylari 10 paralel + adaptif fren (0.36 -> 3.2 kayit/sn) & feat: EKAP'tan inen dokumani ihaleye yukleme
This commit is contained in:
+21
-7
@@ -69,9 +69,11 @@ CREATE TABLE IF NOT EXISTS belgeler (
|
||||
mime TEXT,
|
||||
dosya TEXT NOT NULL, -- diskteki dosya adı
|
||||
son_kullanma TEXT,
|
||||
ikn TEXT, -- belge bir ihaleye aitse İKN/DTN
|
||||
olusturma TEXT
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_belge_email ON belgeler(email);
|
||||
CREATE INDEX IF NOT EXISTS idx_belge_ikn ON belgeler(email, ikn);
|
||||
`;
|
||||
|
||||
export function available() { return Boolean(DatabaseSync); }
|
||||
@@ -82,6 +84,16 @@ export function openDb() {
|
||||
fs.mkdirSync(BELGE_DIR, { recursive: true });
|
||||
const db = new DatabaseSync(DB_PATH);
|
||||
db.exec(SCHEMA);
|
||||
// Geçiş: belgeler ihaleye bağlanabilsin diye ikn kolonu eklendi
|
||||
try {
|
||||
const k = db.prepare('PRAGMA table_info(belgeler)').all().map((c) => c.name);
|
||||
if (!k.includes('ikn')) {
|
||||
db.exec('ALTER TABLE belgeler ADD COLUMN ikn TEXT');
|
||||
console.log('[user-store] belgeler.ikn kolonu eklendi');
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('[user-store] belge şema geçişi atlandı:', e.message);
|
||||
}
|
||||
return db;
|
||||
}
|
||||
|
||||
@@ -212,18 +224,20 @@ export function verifyApiKey(ham) {
|
||||
|
||||
// --- Belgeler (gerçek dosya, gerçek boyut) ---------------------------------
|
||||
|
||||
export function addDocument(email, { ad, kategori, boyut, mime, dosya, sonKullanma }) {
|
||||
export function addDocument(email, { ad, kategori, boyut, mime, dosya, sonKullanma, ikn }) {
|
||||
const id = crypto.randomUUID();
|
||||
withDb((db) => db.prepare(
|
||||
'INSERT INTO belgeler (id,email,ad,kategori,boyut,mime,dosya,son_kullanma,olusturma) VALUES (?,?,?,?,?,?,?,?,?)'
|
||||
).run(id, email, ad, kategori || null, boyut, mime || null, dosya, sonKullanma || null, now()));
|
||||
'INSERT INTO belgeler (id,email,ad,kategori,boyut,mime,dosya,son_kullanma,ikn,olusturma) VALUES (?,?,?,?,?,?,?,?,?,?)'
|
||||
).run(id, email, ad, kategori || null, boyut, mime || null, dosya, sonKullanma || null, ikn || null, now()));
|
||||
return id;
|
||||
}
|
||||
|
||||
export function listDocuments(email) {
|
||||
return withDb((db) => db.prepare(
|
||||
'SELECT id, ad, kategori, boyut, mime, son_kullanma, olusturma FROM belgeler WHERE email=? ORDER BY olusturma DESC'
|
||||
).all(email), []);
|
||||
export function listDocuments(email, { ikn } = {}) {
|
||||
const alanlar = 'id, ad, kategori, boyut, mime, son_kullanma, ikn, olusturma';
|
||||
return withDb((db) => (ikn
|
||||
? db.prepare(`SELECT ${alanlar} FROM belgeler WHERE email=? AND ikn=? ORDER BY olusturma DESC`).all(email, ikn)
|
||||
: db.prepare(`SELECT ${alanlar} FROM belgeler WHERE email=? ORDER BY olusturma DESC`).all(email)
|
||||
), []);
|
||||
}
|
||||
|
||||
export function getDocument(email, id) {
|
||||
|
||||
Reference in New Issue
Block a user