1 % Module de création de la base de données euphorik.
12 -include("../include/euphorik_bd.hrl").
15 % Instructions pour créer une nouvelle base :
16 % $erl -sname yaws -mnesia dir '"/projets/euphorik/BD"'
17 % voir doc/installation.txt
19 % >euphorik_bd:create().
22 mnesia:delete_schema([node()]),
23 mnesia:create_schema([node()]), % nécessaire pour les tables sur disc
29 mnesia:create_table(counter
, [
30 {attributes
, record_info(fields
, counter
)},
31 {disc_copies
, [node()]}
33 mnesia:create_table(minichat
, [
34 {attributes
, record_info(fields
, minichat
)},
36 {disc_copies
, [node()]}
38 mnesia:create_table(reponse_minichat
, [
40 {attributes
, record_info(fields
, reponse_minichat
)},
42 {disc_copies
, [node()]}
44 mnesia:create_table(user
, [
45 {attributes
, record_info(fields
, user
)},
46 {index
, [cookie
, login
]},
47 {disc_copies
, [node()]}
49 mnesia:create_table(ip_table
, [
50 {attributes
, record_info(fields
, ip_table
)},
51 {disc_copies
, [node()]}
53 mnesia:create_table(troll
, [
54 {attributes
, record_info(fields
, troll
)},
55 {disc_copies
, [node()]}
60 mnesia:transform_table(
62 fun({user
, Id
, Cookie
, Pseudo
, Date_creation
, Date_derniere_connexion
, Css
}) ->
63 {user
, Id
, Cookie
, Pseudo
, "", "", "", Date_creation
, Date_derniere_connexion
, Css
}
65 record_info(fields
, user
),
69 mnesia:transform_table(
71 fun({user
, Id
, Cookie
, Pseudo
, Login
, Password
, Email
, Date_creation
, Date_derniere_connexion
, Css
}) ->
72 {user
, Id
, Cookie
, Pseudo
, Login
, Password
, Email
, Date_creation
, Date_derniere_connexion
, Css
, 0}
74 record_info(fields
, user
),
78 mnesia:transform_table(
80 fun({user
, Id
, Cookie
, Pseudo
, Login
, Password
, Email
, Date_creation
, Date_derniere_connexion
, Css
, Indice_flood
}) ->
81 {user
, Id
, Cookie
, Pseudo
, Login
, Password
, Email
, Date_creation
, Date_derniere_connexion
, Css
, Indice_flood
, []}
83 record_info(fields
, user
),
86 % Ajout du numéro de page de la conv principale
88 mnesia:transform_table(
90 fun({user
, Id
, Cookie
, Pseudo
, Login
, Password
, Email
, Date_creation
, Date_derniere_connexion
, Css
, Indice_flood
, Conversations
}) ->
91 {user
, Id
, Cookie
, Pseudo
, Login
, Password
, Email
, Date_creation
, Date_derniere_connexion
, Css
, Indice_flood
, 1, Conversations
}
93 record_info(fields
, user
),
96 % Ajout le format d'affichage des pseudos
98 mnesia:transform_table(
100 fun({user
, Id
, Cookie
, Pseudo
, Login
, Password
, Email
, Date_creation
, Date_derniere_connexion
, Css
, Indice_flood
, Page_Principale
, Conversations
}) ->
101 {user
, Id
, Cookie
, Pseudo
, Login
, Password
, Email
, Date_creation
, Date_derniere_connexion
, Css
, nick
, Indice_flood
, Page_Principale
, Conversations
}
103 record_info(fields
, user
),
106 % Ajout de la table 'ip_table'
107 % Ajout du statut 'ek_master' pour les users
109 mnesia:transform_table(
111 fun({user
, Id
, Cookie
, Pseudo
, Login
, Password
, Email
, Date_creation
, Date_derniere_connexion
, Css
, Nick_format
, Indice_flood
, Page_Principale
, Conversations
}) ->
112 {user
, Id
, Cookie
, Pseudo
, Login
, Password
, Email
, Date_creation
, Date_derniere_connexion
, Css
, Nick_format
, Indice_flood
, Page_Principale
, Conversations
, false
, undefined
}
114 record_info(fields
, user
),
117 mnesia:create_table(ip_table
, [
118 {attributes
, record_info(fields
, ip_table
)},
119 {disc_copies
, [node()]}
121 mnesia:create_table(troll
, [
122 {attributes
, record_info(fields
, troll
)},
123 {disc_copies
, [node()]}
126 mnesia:transform_table(
129 record_info(fields
, ip_table
),
135 % exemple de peuplage de la BD, utilisé pour les tests
139 mnesia:write({minichat
, now(), "Pierre", "Salut tout le monde"}),
140 mnesia:write({minichat
, now(), "Paul", "Salut à toi !"})