summaryrefslogtreecommitdiff
path: root/src/model/StructTablesDB.php
blob: 0f13b80494abc14721365b959e129eb5bae2d2bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
// model/StructTablesDB.php

// structure de données façon C
// créer les requêtes avec implode(', ', $DbStructure)
class StructTablesDB
{
    // possibilité de lire un fichier JSON
    static public $structureOfTables = [
        // la table prestations est liée à la table clients
        // les tables devis_factures, cesu et locations sont liées à la table prestations
        'clients' => ['ID' => 'INTEGER', 'prenom_nom' => 'TEXT', 'code_client' => 'TEXT', 'adresse' => 'TEXT', 'telephone' => 'TEXT', 'courriel' => 'TEXT', 'commentaires' => 'TEXT'],
        'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type_presta' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'],
        'devisfactures' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'validite_devis' => 'TEXT', 'signature_devis' => 'TEXT', 'taches' => 'TEXT', 'machine' => 'TEXT', 'OS' => 'TEXT', 'donnees' => 'TEXT', 'cles_licences' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL'],
        'cesu' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'duree_travail' => 'TEXT', 'salaire' => 'REAL'],
        'locations' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'designation' => 'TEXT', 'modele_description' => 'TEXT', 'valeur' => 'REAL', 'etat_des_lieux_debut' => 'TEXT', 'etat_des_lieux_fin' => 'TEXT', 'duree_location' => 'INTEGER', 'loyer_mensuel' => 'REAL', 'loyers_payes' => 'INTEGER', 'caution' => 'INTEGER']
    ];
    
    // les types de variables de sqlite sont peu nombreux et autorisent un typage automatique
    // le "type indiqué" est indiqué dans l'instruction CREATE TABLE
    // https://www.leppf.com/site/spip.php?article89

    // || type indiqué || type choisi automatiquement  || autre types possibles  ||
    // ---------------------------------------------------------------------------
    // || TEXT         || TEXT                         || BLOB, NULL             ||
    // || INTEGER      || INTEGER (de 1 à 8 octets)    || REAL, TEXT, BLOB, NULL ||
    // || REAL         || REAL (flottant sur 9 octets) || TEXT, BLOB, NULL       ||
    // || NUMERIC      || INTEGER ou REAL              || TEXT, BLOB, NULL       ||
    // || NONE         || indéfini                     || dépend des données     ||

    // du code SQL écrit pour d'autres SGBD devrait fonctionner,
    // sqlite fera des conversions dans ses propres types avec les problèmes qu'on peut imaginer

    // pour les dates, on stockera à priori le timestamp
}