feat(makefile): Makefile ind sql schema

This commit is contained in:
L0m1g 2025-03-03 11:27:13 +01:00
parent a7d708c8ca
commit e655fb4f71
2 changed files with 74 additions and 0 deletions

37
Makefile Normal file
View file

@ -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

37
schema.sql Normal file
View file

@ -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)
);