FIX #81 (partie d'update de la BD, voir euphorik_bd_admin:patch(2))
[euphorik.git] / modules / include / euphorik_bd.hrl
1 % coding: utf-8
2 % Copyright 2008 Grégory Burri
3 %
4 % This file is part of Euphorik.
5 %
6 % Euphorik is free software: you can redistribute it and/or modify
7 % it under the terms of the GNU General Public License as published by
8 % the Free Software Foundation, either version 3 of the License, or
9 % (at your option) any later version.
10 %
11 % Euphorik is distributed in the hope that it will be useful,
12 % but WITHOUT ANY WARRANTY; without even the implied warranty of
13 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 % GNU General Public License for more details.
15 %
16 % You should have received a copy of the GNU General Public License
17 % along with Euphorik.  If not, see <http://www.gnu.org/licenses/>.
18 %
19 % @author GBurri
20
21
22 % Version de la BD
23 -define(VERSION_BD, 3).
24 -define(TABLES, [counter, proprietes, minichat, reponse_minichat, user, ip_table, troll]).
25
26
27 % Pour générer des id
28 -record(counter,
29    {
30       key,
31       value
32    }).
33    
34    
35 % Mémorse toutes les propriétés, entre autre la version des données
36 -record(proprietes,
37    {
38       nom,
39       valeur
40    }).
41
42
43 % Contient tous les textes que peut envoyer le serveur vers client.
44 -record(texte,
45    {
46       id,
47       fr
48    }).
49
50
51 % décrit un enregistrement d'un message
52 -record(minichat,
53    {
54       id, % integer
55       auteur_id, % -> #user.id
56       date, % erlang:now()
57       pseudo, % chaine de caractère
58       contenu, % chaine de caractère
59       racine_id = undefined % la racine, par défaut correspond à l'id du message
60    }).
61    
62    
63 % type bag
64 % 'repondant' repond à 'cible'
65 -record(reponse_minichat,
66    {
67       repondant, % -> #minichat.id
68       cible % -> #minichat.id
69    }). 
70
71
72 -record(profile, % attention : pas une table !
73    {
74       pseudo = [], % string()
75       email = [], % string()
76       css = [], % string()
77       nick_format = nick, %atom(), peut valoir 'nick', 'login' ou 'nick_login'
78       view_times = true,
79       view_tooltips = true,
80       ostentatious_master = light, % peut valoir invisible, light ou heavy. seulement pour ek_master
81       chat_order = reverse, % peut valoir chrono ou reverse
82       conversations = [] % [{integer(), bool}], la liste des messages correspondant au conversation {racine, reduite?}
83    }).\r
84    \r
85    
86 -record(user,
87    {
88       id,
89       cookie, % string()
90       login = [], % string()
91       password = [], % string() (md5)
92       profile = #profile{},
93       date_creation, % erlang:now()
94       date_derniere_connexion, % erlang:now(), est mis à jour lors de n'importe quelle activitée (envoie de message par exemple)
95       indice_flood = 0, % integer() est incrémenté lorsque l'utilisateur envoie trop rapidement des messages.
96       ek_master = false,
97       last_ip = undefined % integer(), undefined si inconnu
98    }).
99
100
101 % identificateur : (ip)
102 -record(ip_table,
103    {
104       ip, % {integer(), integer(), integer(), integer()}
105       ban = undefined, % la date du dernier bannissement
106       ban_duration = 0, % le temps de ban en minute
107       nb_try_register = 0,
108       nb_try_login = 0, % pour l'instant pas utilisé
109       date_last_try_register,
110       date_last_try_login % pour l'instant pas utilisé
111    }).
112    
113    
114 -record(troll,
115    {
116       id,
117       id_user,\r
118       id_minichat = undefined, % l'id du message associé
119       date_create, % erlang:now()
120       date_post = undefined, % date à laquelle le troll est affiché sur la page principale. undefined initialement puis erlang:now() quand affiché
121       content % chaine de caractère
122    }).
123