Files
html/generated/api-20260413-112423/schema.sql
2026-04-13 13:24:46 +02:00

87 lines
2.8 KiB
SQL

```sql
CREATE TABLE utilisateurs (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(100) NOT NULL UNIQUE,
mot_de_passe VARCHAR(255) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_utilisateurs_username ON utilisateurs (username);
CREATE INDEX idx_utilisateurs_email ON utilisateurs (email);
CREATE TABLE roles (
id SERIAL PRIMARY KEY,
nom VARCHAR(50) NOT NULL UNIQUE,
description TEXT
);
CREATE INDEX idx_roles_nom ON roles (nom);
CREATE TABLE utilisateurs_roles (
utilisateur_id INTEGER NOT NULL,
role_id INTEGER NOT NULL,
PRIMARY KEY (utilisateur_id, role_id),
FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs (id),
FOREIGN KEY (role_id) REFERENCES roles (id)
);
CREATE TABLE tokens (
id SERIAL PRIMARY KEY,
utilisateur_id INTEGER NOT NULL,
token VARCHAR(255) NOT NULL,
expires_at TIMESTAMP NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (utilisateur_id) REFERENCES utilisateurs (id)
);
CREATE INDEX idx_tokens_utilisateur_id ON tokens (utilisateur_id);
CREATE INDEX idx_tokens_expires_at ON tokens (expires_at);
CREATE TABLE articles (
id SERIAL PRIMARY KEY,
titre VARCHAR(100) NOT NULL,
contenu TEXT NOT NULL,
auteur_id INTEGER NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (auteur_id) REFERENCES utilisateurs (id)
);
CREATE INDEX idx_articles_titre ON articles (titre);
CREATE INDEX idx_articles_auteur_id ON articles (auteur_id);
CREATE TABLE commentaires (
id SERIAL PRIMARY KEY,
contenu TEXT NOT NULL,
article_id INTEGER NOT NULL,
auteur_id INTEGER NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (article_id) REFERENCES articles (id),
FOREIGN KEY (auteur_id) REFERENCES utilisateurs (id)
);
CREATE INDEX idx_commentaires_article_id ON commentaires (article_id);
CREATE INDEX idx_commentaires_auteur_id ON commentaires (auteur_id);
INSERT INTO roles (id, nom, description) VALUES
(1, 'admin', 'Administrateur'),
(2, 'utilisateur', 'Utilisateur standard');
INSERT INTO utilisateurs (id, username, email, mot_de_passe) VALUES
(1, 'admin', 'admin@example.com', 'password'),
(2, 'utilisateur', 'utilisateur@example.com', 'password');
INSERT INTO utilisateurs_roles (utilisateur_id, role_id) VALUES
(1, 1),
(2, 2);
INSERT INTO articles (id, titre, contenu, auteur_id) VALUES
(1, 'Article 1', 'Contenu de l\'article 1', 1),
(2, 'Article 2', 'Contenu de l\'article 2', 2);
INSERT INTO commentaires (id, contenu, article_id, auteur_id) VALUES
(1, 'Commentaire 1', 1, 1),
(2, 'Commentaire 2', 2, 2);
```