forked from EphecLLN/Dev-Web-2024
-
Notifications
You must be signed in to change notification settings - Fork 4
New SQL code création
Ichiky_Otsu edited this page May 5, 2024
·
11 revisions
-- Table des entreprises
CREATE TABLE enterprises (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT,
logo_url VARCHAR(255),
website_url VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Table des utilisateurs
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(255) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
first_name TEXT DEFAULT '',
last_name TEXT DEFAULT '',
role VARCHAR(20) NOT NULL CHECK (role IN ('user', 'enterprise', 'admin')),
enterprise_id INTEGER REFERENCES enterprises(id),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Table des annonces
CREATE TABLE adverts (
id SERIAL PRIMARY KEY,
enterprise_id INTEGER NOT NULL REFERENCES enterprises(id),
title VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
location VARCHAR(255) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
salary DECIMAL(10, 2) NOT NULL,
status VARCHAR(20) NOT NULL CHECK (status IN ('open', 'closed', 'expired')),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Table des candidatures
CREATE TABLE applications (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id),
advert_id INTEGER NOT NULL REFERENCES adverts(id),
status VARCHAR(20) NOT NULL CHECK (status IN ('pending', 'accepted', 'rejected')),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Table des messages du chat
CREATE TABLE chat_messages (
id SERIAL PRIMARY KEY,
sender_id INTEGER NOT NULL REFERENCES users(id),
recipient_id INTEGER NOT NULL REFERENCES users(id),
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Table des plannings
CREATE TABLE schedules (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id),
advert_id INTEGER NOT NULL REFERENCES adverts(id),
start_time TIMESTAMP NOT NULL,
end_time TIMESTAMP NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Table des notifications
CREATE TABLE notifications (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id),
content TEXT NOT NULL,
is_read BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Table des informations utilisateur
CREATE TABLE user_info (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL UNIQUE REFERENCES users(id),
postal_code TEXT,
city TEXT,
address TEXT
);
-- Trigger pour insérer automatiquement une entrée dans la table user_info lors de la création d'un utilisateur
CREATE OR REPLACE FUNCTION insert_user_info() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO user_info (user_id) VALUES (NEW.id);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trigger_insert_user_info
AFTER INSERT ON users
FOR EACH ROW
EXECUTE FUNCTION insert_user_info();
-- Données pour la table enterprises
INSERT INTO enterprises (name, description, logo_url, website_url) VALUES
('Acme Inc.', 'Lorem ipsum dolor sit amet', 'https://example.com/acme-logo.png', 'https://acme.com');
-- Données pour la table users
INSERT INTO users (username, email, password_hash, first_name, last_name, role, enterprise_id) VALUES
('john_doe', '[email protected]', '$2a$10$xKLBw9gqGMo4R.Rt/DNJCOU5Z5O5O5O5O5O5O5O5O5', 'John', 'Doe', 'user', NULL),
('jane_smith', '[email protected]', '$2a$10$4m8I6eYJY1q1q1q1q1q1q1tIeNwM6Q6Q6Q6Q6Q6Q6Q6', 'Jane', 'Smith', 'user', NULL),
('acme_inc', '[email protected]', '$2a$10$SgzfuE91DJgGgGgGgGgGgGI7EIj50505050505050505', '', '', 'enterprise', 1),
('admin', '[email protected]', '$2b$10$5UJD/Dqj.rTNeFbzwqzwu.7brP5p3VVo8W7Zk11JgIRUFOCj1WbKa', 'Admin', 'User', 'admin', NULL);
-- Données pour la table adverts
INSERT INTO adverts (enterprise_id, title, description, location, start_date, end_date, salary, status) VALUES
(1, 'Développeur Web', 'Nous recherchons un développeur web expérimenté', 'Paris', '2023-07-01', '2023-12-31', 3500.00, 'open'),
(1, 'Designer UX/UI', 'Rejoignez notre équipe de design pour créer des expériences utilisateur exceptionnelles', 'Lyon', '2023-08-15', '2024-02-15', 4000.00, 'open');
-- Données pour la table applications
INSERT INTO applications (user_id, advert_id, status) VALUES
(1, 1, 'pending'),
(2, 1, 'accepted'),
(1, 2, 'rejected');
-- Données pour la table chat_messages
INSERT INTO chat_messages (sender_id, recipient_id, content) VALUES
(1, 3, 'Bonjour, je suis intéressé par le poste de développeur web'),
(3, 1, 'Merci pour votre intérêt, pouvez-vous nous en dire plus sur votre expérience ?'),
(2, 3, 'J''ai postulé pour le poste de développeur web, quand puis-je espérer une réponse ?');
-- Données pour la table schedules
INSERT INTO schedules (user_id, advert_id, start_time, end_time) VALUES
(2, 1, '2023-07-01 09:00:00', '2023-07-01 17:00:00'),
(2, 1, '2023-07-02 09:00:00', '2023-07-02 17:00:00'),
(2, 1, '2023-07-03 09:00:00', '2023-07-03 17:00:00');
-- Données pour la table notifications
INSERT INTO notifications (user_id, content) VALUES
(1, 'Votre candidature pour le poste de développeur web a été reçue'),
(2, 'Félicitations, votre candidature pour le poste de développeur web a été acceptée !'),
(1, 'Malheureusement, votre candidature pour le poste de designer UX/UI a été rejetée');