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