File DB_SCHEMA artifact 6628ad2759 part of check-in c9c83d62d7



-- Configuration de Garradin
CREATE TABLE config (
    cle TEXT PRIMARY KEY,
    valeur TEXT
);

-- On stocke ici les ID de catégorie de compta correspondant aux types spéciaux
-- compta_categorie_cotisations => id_categorie
-- compta_categorie_dons => id_categorie

-- Catégories de membres
CREATE TABLE membres_categories (
    id INTEGER PRIMARY KEY,
    nom TEXT,
    description TEXT,
    montant_cotisation REAL,
    duree_cotisation INTEGER DEFAULT 12, -- En mois
    droit_wiki INT DEFAULT 1,
    droit_membres INT DEFAULT 1,
    droit_compta INT DEFAULT 1,
    droit_inscription INT DEFAULT 0,
    droit_connexion INT DEFAULT 1,
    droit_config INT DEFAULT 0
);


-- Membres de l'asso
CREATE TABLE membres (
    id INTEGER PRIMARY KEY,
    id_categorie INTEGER,

    -- Connexion
    passe TEXT,

    -- Données personnelles
    nom TEXT,
    email TEXT,

    adresse TEXT,
    code_postal INTEGER,
    ville TEXT,
    pays TEXT,
    telephone TEXT,
    date_naissance TEXT,

    -- Pour le bordel
    notes TEXT,

    date_inscription TEXT DEFAULT CURRENT_DATE,
    date_connexion TEXT,

    -- Dernière cotisation enregistrée
    date_cotisation TEXT
);

CREATE INDEX membres_id_categorie ON membres (id_categorie);

--
-- COMPTA
--

CREATE TABLE compta_categories (
    id INTEGER PRIMARY KEY,
    nom TEXT,
    description TEXT,
    type_recus INTEGER, -- reçu fiscal, reçu de don, reçu de cotisation, facture
    type_operations INTEGER -- 0 = dépense, 1 = recette
);

CREATE TABLE compta_comptes (
    id INTEGER PRIMARY KEY,
    libelle TEXT,
    description TEXT,

    banque TEXT,
    iban TEXT,
    bic TEXT,

    solde_initial REAL,
    solde REAL
);

CREATE TABLE compta_operations (
    id INTEGER PRIMARY KEY,
    libelle TEXT,
    montant REAL,
    description TEXT,

    id_compte INTEGER,
    id_categorie INTEGER,
    id_auteur INTEGER
);


CREATE INDEX compta_operations_id_compte ON compta_operations (id_compte);
CREATE INDEX compta_operations_id_categorie ON compta_operations (id_categorie);
CREATE INDEX compta_operations_id_auteur ON compta_operations (id_auteur);

--
-- WIKI
--

CREATE TABLE wiki_pages (
    id INTEGER PRIMARY KEY,
    titre TEXT,
    revision INTEGER,
    acces INTEGER -- ID catégorie membre
);

CREATE TABLE wiki_revisions (
    id_page INTEGER,
    revision INTEGER,

    id_auteur INTEGER,
    suivi INTEGER, -- 0/1

    contenu TEXT,
    modification TEXT, -- Description des modifications effectuées
    date TEXT DEFAULT CURRENT_TIMESTAMP,

    chiffrement INTEGER, -- 0/1

    PRIMARY KEY(id_page, revision)
);

CREATE INDEX wiki_revisions_id_page ON wiki_revisions (id_page);
CREATE INDEX wiki_revisions_id_auteur ON wiki_revisions (id_auteur, suivi);

CREATE TABLE wiki_fichiers (
    id INTEGER PRIMARY KEY,
    id_page INTEGER,
    nom TEXT,
    hash TEXT
);

CREATE INDEX wiki_fichiers_id_page ON wiki_fichiers (id_page);


--
-- générateur de paperasses
--

CREATE TABLE papiers (
    id INTEGER PRIMARY KEY,
    modele INTEGER,

    donnees TEXT
);