-- Catalogue des prestations, propre a chaque concierge.
--
-- concierge_id NOT NULL : chaque concierge tient sa liste. « Menage » chez l'un et
-- « Nettoyage » chez l'autre sont deux lignes distinctes, ce qui est le prix a payer
-- pour que chacun nomme son offre comme il la vend.
--
-- Consequence a connaitre, et resolue par la table des tarifs : un bien peut avoir
-- deux proprietaires rattaches a deux concierges differents. « Quelles prestations
-- pour ce bien ? » n'a donc pas de reponse dans CETTE table. C'est le TARIF qui fait
-- l'offre : les prestations disponibles sur un bien sont celles qui y sont tarifees,
-- quel que soit le concierge qui les a tarifees. Le proprietaire voit une liste
-- unique, sans avoir a savoir de qui vient chaque ligne.
--
-- Unicite sur (concierge_id, libelle) et non sur libelle seul : deux concierges ont
-- le droit d'appeler « Menage » chacun leur prestation.
--
-- On ne supprime pas un type utilise : actif = 0 le retire des choix. La cle
-- etrangere des tarifs est en RESTRICT, une suppression echouerait de toute facon.

CREATE TABLE types_prestation (
    id           BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    reference    CHAR(26)        NOT NULL,
    concierge_id BIGINT UNSIGNED NOT NULL,
    libelle      VARCHAR(80)     NOT NULL,
    ordre        SMALLINT        NOT NULL DEFAULT 100,
    actif        TINYINT(1)      NOT NULL DEFAULT 1,
    cree_le      DATETIME        NOT NULL,
    modifie_le   DATETIME        NOT NULL,

    PRIMARY KEY (id),
    UNIQUE KEY uq_types_prestation_reference (reference),
    UNIQUE KEY uq_types_prestation_libelle (concierge_id, libelle),
    KEY idx_types_prestation_concierge (concierge_id, actif, ordre),

    -- RESTRICT implicite : on ne supprime pas un concierge, on le revoque. Si une
    -- suppression finissait par arriver, elle doit echouer plutot que d'emporter
    -- tout son catalogue et, par cascade, ses tarifs.
    CONSTRAINT fk_types_prestation_concierge
        FOREIGN KEY (concierge_id) REFERENCES utilisateurs (id)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
