From e655fb4f71a4d501f5e9b250eb9d8aaa0001f89a Mon Sep 17 00:00:00 2001 From: L0m1g Date: Mon, 3 Mar 2025 11:27:13 +0100 Subject: [PATCH] feat(makefile): Makefile ind sql schema --- Makefile | 37 +++++++++++++++++++++++++++++++++++++ schema.sql | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 Makefile create mode 100644 schema.sql diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..afe0337 --- /dev/null +++ b/Makefile @@ -0,0 +1,37 @@ +DB_PATH := /var/lib/erminig/erminig.db +DB_DIR := /var/lib/erminig +PAK_USER := pak + +all: prepare_env create_db create_pak_user + +prepare_env: + @echo "Création de l'arborescence pour Erminig..." + @mkdir -p $(DB_DIR) + @mkdir -p /var/govel + @chown -R $(PAK_USER):$(PAK_USER) /var/govel || true + +create_db: + @echo "Initialisation de la base SQLite Erminig..." + @if [ ! -f "$(DB_PATH)" ]; then \ + sqlite3 $(DB_PATH) < schema.sql; \ + chown $(PAK_USER):$(PAK_USER) $(DB_PATH); \ + echo "Base de données créée à $(DB_PATH)"; \ + else \ + echo "La base existe déjà, on touche pas."; \ + fi + +create_pak_user: + @echo "Création de l'utilisateur '$(PAK_USER)'..." + @if ! id -u $(PAK_USER) >/dev/null 2>&1; then \ + useradd -r -m -d /var/govel -s /bin/bash $(PAK_USER); \ + echo "Utilisateur '$(PAK_USER)' créé."; \ + else \ + echo "L'utilisateur '$(PAK_USER)' existe déjà."; \ + fi + +clean: + @echo "Suppression de la base et de l'arborescence..." + @rm -f $(DB_PATH) + @rm -rf /var/govel + +.PHONY: all prepare_env create_db create_pak_user clean diff --git a/schema.sql b/schema.sql new file mode 100644 index 0000000..b10562e --- /dev/null +++ b/schema.sql @@ -0,0 +1,37 @@ +-- schema.sql - Structure initiale de la base Erminig + +CREATE TABLE packages ( + name TEXT PRIMARY KEY, + version TEXT NOT NULL, + revision INTEGER NOT NULL, + status TEXT NOT NULL, -- draft, built, failed, validated + blocked BOOLEAN NOT NULL DEFAULT 0, + created_at TEXT DEFAULT CURRENT_TIMESTAMP, + updated_at TEXT DEFAULT CURRENT_TIMESTAMP +); + +CREATE TABLE sources ( + package_name TEXT, + url TEXT, + hash TEXT, + FOREIGN KEY (package_name) REFERENCES packages(name) +); + +CREATE TABLE dependencies ( + package_name TEXT, + dependency TEXT, + type TEXT, -- build, runtime, check + FOREIGN KEY (package_name) REFERENCES packages(name) +); + +CREATE TABLE builds ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + package_name TEXT, + version TEXT, + revision INTEGER, + start_time TEXT DEFAULT CURRENT_TIMESTAMP, + end_time TEXT, + status TEXT, -- success, failed + log TEXT, + FOREIGN KEY (package_name) REFERENCES packages(name) +);