#/bin/sh

SYSTEM_DIR="/calista"
REGISTRY_FILE="$SYSTEM_DIR/registry.db"
USER=$(whoami)

# Проверяем, существует ли файл реестра
if [ -f "$REGISTRY_FILE" ]; then
    echo "Ошибка: Файл реестра уже существует: $REGISTRY_FILE"
    echo "Инициализация запрещена. Если вы хотите пересоздать реестр, удалите файл вручную."
    exit 1
fi

# Файла нет — создаём директорию (если её нет)
if [ ! -d "$SYSTEM_DIR" ]; then
    mkdir -p "$SYSTEM_DIR"
    if [ ! -d "$SYSTEM_DIR" ]; then
        echo "Критическая ошибка: Не удалось создать системную директорию"
        exit 1
    fi
fi

# Создаём базу данных и таблицы
echo "Создаём файл реестра: $REGISTRY_FILE"

#Calista log
sqlite3 "$REGISTRY_FILE" <<EOF
CREATE TABLE IF NOT EXISTS calista_log (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    type TEXT NOT NULL, -- 'error', 'info'
    user TEXT NOT NULL,
    details TEXT,                   -- дополнительная информация
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
EOF

sqlite3 "$REGISTRY_FILE" <<EOF
INSERT INTO calista_log (type, user, details) VALUES ('info', '$USER', 'Регистр Calista инициализирован успешно');
INSERT INTO calista_log (type, user, details) VALUES ('info', '$USER', 'Путь к реестру - $REGISTRY_FILE');
EOF

#Создание таблицы компонентов
sqlite3 "$REGISTRY_FILE" <<EOF
CREATE TABLE IF NOT EXISTS components (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT UNIQUE NOT NULL,      -- уникальный идентификатор компонента (cpm, cgl)
    version TEXT,                   -- версия
    source TEXT,                    -- git / local
    description TEXT,               -- описание
    installed_at TIMESTAMP          -- время установки
);
EOF

#Создание таблицы устройств
sqlite3 "$REGISTRY_FILE" <<EOF
-- Таблица устройств (текущее состояние системы)
CREATE TABLE IF NOT EXISTS devices (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    bus TEXT NOT NULL,              -- 'pci', 'usb'
    vendor TEXT NOT NULL,           -- '0x8086'
    device TEXT NOT NULL,           -- '0x4222'
    subvendor TEXT,                 -- '0x1179' (опционально)
    subdevice TEXT,                 -- '0xff10' (опционально)
    name TEXT DEFAULT 'unknown',   -- 'Intel 3945ABG Wi-Fi'
    status TEXT DEFAULT 'unknown',  -- 'installed', 'not_installed', 'builtin', 'unknown'
    driver TEXT,                    -- 'wpi', 'nvidia', 'snd_hda'
    module_path TEXT,               -- путь к модулю (если известен)
    detected_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(bus, vendor, device, subvendor, subdevice)
);
EOF
