File size: 1,177 Bytes
1645ff3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import sqlite3 from 'sqlite3';
import { open, Database } from 'sqlite';

let db: Database | null = null;

export async function getDbConnection() {
  if (!db) {
    db = await open({
      filename: './data/factory.db',
      driver: sqlite3.Database
    });
    await initDb();
  }
  return db;
}

async function initDb() {
  if (!db) return;
  
  // جدول المشاريع والأسلحة
  await db.exec(`
    CREATE TABLE IF NOT EXISTS projects (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      name TEXT,
      type TEXT,
      current_code TEXT,
      last_score INTEGER,
      status TEXT DEFAULT 'dev'
    );
  `);

  // جدول المراجع (Knowledge Base)
  await db.exec(`
    CREATE TABLE IF NOT EXISTS malware_refs (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      family_name TEXT,
      technique TEXT,
      detection_rules TEXT
    );
  `);

  // سجل الحلقة (Feedback Loop)
  await db.exec(`
    CREATE TABLE IF NOT EXISTS loop_logs (
      id INTEGER PRIMARY KEY AUTOINCREMENT,
      project_id INTEGER,
      iteration INTEGER,
      criticism TEXT,
      score INTEGER,
      timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
    );
  `);
}