MOD mise à jour mineur sur la présentation du code
[euphorik.git] / modules / erl / euphorik_bd.erl
1 % Module de création de la base de données euphorik.
2 % @author G.Burri
3
4 -module(euphorik_bd).
5 -export([
6 create/0,
7 create_tables/0,
8 vers_version/1,
9 peupler/0
10 ]).
11
12 -include("../include/euphorik_bd.hrl").
13
14
15 % Instructions pour créer une nouvelle base :
16 % $erl -sname yaws -mnesia dir '"/projets/euphorik/BD"'
17 % >l(euphorik_bd).
18 % >euphorik_bd:create().
19 create() ->
20 mnesia:stop(),
21 mnesia:delete_schema([node()]),
22 mnesia:create_schema([node()]), % nécessaire pour les tables sur disc
23 mnesia:start(),
24 create_tables().
25
26
27 create_tables() ->
28 mnesia:create_table(counter, [
29 {attributes, record_info(fields, counter)},
30 {disc_copies, [node()]}
31 ]),
32 mnesia:create_table(minichat, [
33 {attributes, record_info(fields, minichat)},
34 {index, [auteur_id]},
35 {disc_copies, [node()]}
36 ]),
37 mnesia:create_table(reponse_minichat, [
38 {type, bag},
39 {attributes, record_info(fields, reponse_minichat)},
40 {index, [cible]},
41 {disc_copies, [node()]}
42 ]),
43 mnesia:create_table(user, [
44 {attributes, record_info(fields, user)},
45 {index, [cookie, login]},
46 {disc_copies, [node()]}
47 ]).
48
49
50 vers_version(2) ->
51 mnesia:transform_table(
52 user,
53 fun({user, Id, Cookie, Pseudo, Date_creation, Date_derniere_connexion, Css}) ->
54 {user, Id, Cookie, Pseudo, "", "", "", Date_creation, Date_derniere_connexion, Css}
55 end,
56 record_info(fields, user),
57 user
58 ).
59
60
61 vers_version(3) ->
62 mnesia:transform_table(
63 user,
64 fun({user, Id, Cookie, Pseudo, Login, Password, Email, Date_creation, Date_derniere_connexion, Css}) ->
65 {user, Id, Cookie, Pseudo, Login, Password, Email, Date_creation, Date_derniere_connexion, Css, 0}
66 end,
67 record_info(fields, user),
68 user
69 ).
70
71
72 % exemple de peuplage de la BD, utilisé pour les tests
73 peupler() ->
74 mnesia:transaction(
75 fun() ->
76 mnesia:write({minichat, now(), "Pierre", "Salut tout le monde"}),
77 mnesia:write({minichat, now(), "Paul", "Salut à toi !"})
78 end
79 ).
80
81