File DB_SCHEMA artifact 07e959014f part of check-in 87bfee73b4



-- 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
);

-- Droits affectés à chaque catégorie de membres
CREATE TABLE membres_categories_droits (
    id_categorie INTEGER,
    droit INTEGER,
    PRIMARY KEY (id_categorie, droit)
);

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

    -- Connexion
    passe TEXT,

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

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

    -- Pour le bordel
    details TEXT,

    date_inscription TEXT,
    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

    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
);