-- 110_compteurs.sql

USE blitech_facturation_dev;

CREATE TABLE compteurs (
  -- Identifiant technique
  id             CHAR(36)     NOT NULL,

  -- Entité concernée (Blitech, Wakan, ...)
  id_entite      CHAR(36)     NOT NULL,

  -- Client concerné pour ce compteur :
  -- NULL => compteur "global" pour l'entité
  -- non NULL => compteur spécifique à ce client
  id_client      CHAR(36)     DEFAULT NULL,

  -- Type de compteur : 'facture', 'devis', 'client', 'abonnement', ...
  type_compteur  VARCHAR(50)  NOT NULL,

  -- Année concernée (NULL = pas de notion d'année)
  annee          INT          DEFAULT NULL,

  -- Dernier numéro attribué
  dernier_numero INT          NOT NULL DEFAULT 0,

  date_maj       DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,

  PRIMARY KEY (id),

  CONSTRAINT fk_compteurs_entite
    FOREIGN KEY (id_entite) REFERENCES entites(id)
      ON DELETE CASCADE
      ON UPDATE CASCADE,

  CONSTRAINT fk_compteurs_client
    FOREIGN KEY (id_client) REFERENCES clients(id)
      ON DELETE CASCADE
      ON UPDATE CASCADE,

  -- Unicité par (entite, client éventuellement, type, année)
  UNIQUE KEY uniq_compteur_scope (
    id_entite,
    type_compteur,
    annee,
    id_client
  )
) ENGINE=InnoDB
  DEFAULT CHARSET=utf8mb4
  COLLATE=utf8mb4_unicode_ci;
