MIGRATION VERS GITEA
This commit is contained in:
commit
5f9d991c15
333 files changed
+108514
No files matched your search
@@ -0,0 +1,83 @@
|
||||
-- ============================================================================
|
||||
-- CRÉATION DES TABLES POUR LA GESTION DES TRAVAUX
|
||||
-- ============================================================================
|
||||
|
||||
-- Table principale des travaux
|
||||
CREATE TABLE IF NOT EXISTS travaux (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
titre TEXT NOT NULL,
|
||||
description TEXT,
|
||||
date_debut DATE NOT NULL,
|
||||
date_fin DATE NOT NULL,
|
||||
jours_travaux TEXT[] NOT NULL, -- ['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche']
|
||||
heure_debut TIME NOT NULL,
|
||||
heure_fin TIME NOT NULL,
|
||||
actif BOOLEAN DEFAULT true,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT now(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT now(),
|
||||
deleted_at TIMESTAMP WITH TIME ZONE,
|
||||
|
||||
CONSTRAINT valid_dates CHECK (date_fin >= date_debut),
|
||||
CONSTRAINT valid_hours CHECK (heure_fin > heure_debut)
|
||||
);
|
||||
|
||||
-- Table de liaison entre travaux et sillons de substitution
|
||||
CREATE TABLE IF NOT EXISTS travaux_substitutions (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
travaux_id UUID NOT NULL REFERENCES travaux(id) ON DELETE CASCADE,
|
||||
horaire_id UUID NOT NULL REFERENCES horaires(id) ON DELETE CASCADE,
|
||||
ordre INTEGER DEFAULT 0, -- Ordre d'affichage des substitutions
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT now(),
|
||||
|
||||
UNIQUE(travaux_id, horaire_id)
|
||||
);
|
||||
|
||||
-- Index pour améliorer les performances
|
||||
CREATE INDEX IF NOT EXISTS idx_travaux_dates ON travaux(date_debut, date_fin);
|
||||
CREATE INDEX IF NOT EXISTS idx_travaux_actif ON travaux(actif);
|
||||
CREATE INDEX IF NOT EXISTS idx_travaux_deleted ON travaux(deleted_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_travaux_substitutions_travaux ON travaux_substitutions(travaux_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_travaux_substitutions_horaire ON travaux_substitutions(horaire_id);
|
||||
|
||||
-- Fonction pour mettre à jour updated_at automatiquement
|
||||
CREATE OR REPLACE FUNCTION update_travaux_updated_at()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.updated_at = now();
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Trigger pour mettre à jour updated_at
|
||||
DROP TRIGGER IF EXISTS trigger_update_travaux_updated_at ON travaux;
|
||||
CREATE TRIGGER trigger_update_travaux_updated_at
|
||||
BEFORE UPDATE ON travaux
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_travaux_updated_at();
|
||||
|
||||
-- Commentaires sur les tables
|
||||
COMMENT ON TABLE travaux IS 'Table principale pour la gestion des travaux sur les lignes';
|
||||
COMMENT ON TABLE travaux_substitutions IS 'Table de liaison entre travaux et horaires de substitution';
|
||||
|
||||
COMMENT ON COLUMN travaux.jours_travaux IS 'Jours de la semaine où les travaux ont lieu';
|
||||
COMMENT ON COLUMN travaux.actif IS 'Indique si les travaux sont actifs';
|
||||
COMMENT ON COLUMN travaux.deleted_at IS 'Date de suppression (soft delete)';
|
||||
COMMENT ON COLUMN travaux_substitutions.ordre IS 'Ordre d''affichage des substitutions';
|
||||
|
||||
-- ============================================================================
|
||||
-- DONNÉES DE TEST (optionnel)
|
||||
-- ============================================================================
|
||||
|
||||
-- Exemple de travaux
|
||||
INSERT INTO travaux (titre, description, date_debut, date_fin, jours_travaux, heure_debut, heure_fin, actif)
|
||||
VALUES
|
||||
('Travaux ligne Paris-Lyon', 'Rénovation des voies', '2026-03-01', '2026-03-31', ARRAY['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi'], '09:00', '17:00', true),
|
||||
('Maintenance gare de Lyon', 'Travaux de maintenance planifiés', '2026-04-15', '2026-04-20', ARRAY['samedi', 'dimanche'], '06:00', '22:00', true)
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- Afficher le résultat
|
||||
SELECT
|
||||
'Tables travaux créées avec succès' as statut,
|
||||
(SELECT COUNT(*) FROM travaux) as nombre_travaux,
|
||||
(SELECT COUNT(*) FROM travaux_substitutions) as nombre_substitutions;
|
||||
|
||||
Reference in new issue
Block a user