Database Installation & Setup
Installation & configuration de la base
Option 1 — Docker (recommandé pour le dev local)
docker run --name naivi-postgres \
-e POSTGRES_USER=naivi \
-e POSTGRES_PASSWORD=naivi \
-e POSTGRES_DB=naivi \
-p 5432:5432 \
-d postgres:16DATABASE_URL=postgresql://naivi:naivi@localhost:5432/naivi
Option 2 — PostgreSQL local
Installez PostgreSQL 14+ depuis postgresql.org, puis créez la base:
CREATE USER naivi WITH PASSWORD 'naivi';
CREATE DATABASE naivi OWNER naivi;Appliquer le schéma (Drizzle)
Le schéma est géré par Drizzle ORM depuis apps/server/.
cd apps/server
# Générer les fichiers de migration depuis le schéma TypeScript
bun run db:generate
# Appliquer les migrations sur la DB
bun run db:migrate
# Alternativement: pousser le schéma directement (dev uniquement)
bun run db:pushLes migrations générées se trouvent dans apps/server/drizzle/.
Extension pgcrypto
Le schéma utilise gen_random_uuid() qui requiert l'extension pgcrypto. Elle est activée par le premier script de migration via:
CREATE EXTENSION IF NOT EXISTS pgcrypto;Si vous utilisez PostgreSQL 13+, gen_random_uuid() est disponible nativement sans extension.
Variable DATABASE_URL
Tous les services qui accèdent directement à la DB (server + chatbot) lisent DATABASE_URL:
postgresql://<user>:<password>@<host>:<port>/<database>Pour le chatbot, la connexion est établie via psycopg2 (common/db.py). Pour le server, via Drizzle (db/index.ts).
Rôles par défaut
Au premier démarrage du server, ensureDefaultRoles() crée automatiquement:
- Rôle
admin(is_super_admin: true,display_order: 0) - Rôle
user(is_super_admin: false,display_order: 1)
Ces rôles sont des rôles applicatifs (table roles dans le schéma naivi), distincts des rôles Better Auth (user.role).
Sauvegarde & restauration
# Dump
pg_dump -U naivi naivi > backup.sql
# Restore
psql -U naivi naivi < backup.sqlPour les environnements Kubernetes, configurez des CronJobs de backup ou utilisez un opérateur PostgreSQL (ex: CloudNativePG).
Kalli