Aller au contenu

Serveur

Fenêtre de terminal
npm install -g @petradb/server
Fenêtre de terminal
petradb-server [OPTIONS] [path]

Si un chemin est donné, le serveur ouvre (ou crée) une base de données persistante à cet emplacement. Sans chemin, une base de données en mémoire est utilisée.

OptionDescription
-m, --memoryUtiliser une base de données en mémoire
-p, --portNuméro de port (par défaut : 5480)
-h, --hostAdresse de l’hôte (par défaut : 127.0.0.1)
-c, --configChemin vers un fichier de configuration TOML
Fenêtre de terminal
# Base de données en mémoire sur le port par défaut
petradb-server
# Base de données persistante sur un port personnalisé
petradb-server -p 8080 mydata.db
# Avec un fichier de configuration
petradb-server -c petradb.toml mydata.db

Un fichier TOML contrôle l’authentification, le CORS et les limites de sessions.

auth = "basic"
[[users]]
username = "admin"
password = "$HASHED_PASSWORD"
[[users]]
username = "reader"
password = "$HASHED_PASSWORD"
[cors]
origin = "*" # "*" (par défaut), "none", ou une origine spécifique
[sessions]
max_sessions = 100 # 0 = illimité (par défaut)
ModeDescription
"none"Pas d’authentification (par défaut sans fichier de configuration)
"basic"Authentification HTTP Basic contre la liste [[users]]

Les mots de passe dans le fichier de configuration sont stockés sous forme de hachages PBKDF2.

Lorsque auth = "basic", chaque requête (sauf GET /health) doit inclure un en-tête Authorization: Basic <credentials>.

Valeur de originComportement
"*" (par défaut)Autoriser toutes les origines
"none"Pas d’en-têtes CORS
Une URL (ex. "https://app.example.com")Autoriser uniquement cette origine

Toutes les requêtes et réponses SQL utilisent le codec binaire PetraDB (application/octet-stream). Utilisez la bibliothèque @petradb/client au lieu d’appeler ces endpoints directement.

POST /sql
Content-Type: application/octet-stream
X-Session-Id: <session-id> (optionnel)
<sql text>

Retourne un Seq[Result] encodé en binaire. Sans en-tête X-Session-Id, chaque requête s’exécute dans une session transitoire unique.

POST /session

Retourne { "sessionId": "<id>" }. Utilisez l’ID retourné dans les en-têtes X-Session-Id subséquents pour partager l’état transactionnel entre les requêtes.

DELETE /session/<id>

Retourne { "ok": "true" } en cas de succès, ou 404 si la session n’existe pas.

GET /health

Retourne { "status": "ok" }. Non soumis à l’authentification.

StatutSignification
400Erreur de syntaxe SQL, erreur de type ou référence indéfinie
401Identifiants manquants ou invalides
409Violation de schéma ou de contrainte
503Limite de sessions atteinte