]> git.sur5r.net Git - bacula/bacula/blob - gui/bweb/script/bweb-mysql.sql
bweb: Add sqlite support
[bacula/bacula] / gui / bweb / script / bweb-mysql.sql
1 -- --------------------------------------------------
2 -- Upgrade from 5.0
3 -- --------------------------------------------------
4
5 CREATE UNIQUE INDEX location_idx ON Location (Location(255));
6
7 -- --------------------------------------------------
8 -- Upgrade from 2.4
9 -- --------------------------------------------------
10
11 delimiter |
12
13 DROP FUNCTION IF EXISTS base64_decode_lstat |
14 CREATE FUNCTION base64_decode_lstat (field INTEGER, input BLOB)
15    RETURNS BIGINT
16    CONTAINS SQL
17    DETERMINISTIC
18    SQL SECURITY INVOKER
19 BEGIN
20    DECLARE first_char BINARY(1);
21    DECLARE accum_value BIGINT UNSIGNED DEFAULT 0;
22
23    -- The number of fields can vary, so we need 2 calls to SUBSTRING_INDEX
24    SET input = SUBSTRING_INDEX(SUBSTRING_INDEX(input, ' ', field),
25                                ' ', -1);
26
27    WHILE LENGTH(input) > 0 DO
28            SET first_char = SUBSTRING(input, 1, 1);
29            SET input = SUBSTRING(input, 2);
30
31            SET accum_value = (accum_value << 6) +
32                 INSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
33                 first_char)-1;
34    END WHILE;
35
36    RETURN accum_value;
37 END |
38
39 delimiter ;
40
41 -- --------------------------------------------------
42 -- Upgrade from 2.2
43 -- --------------------------------------------------
44
45 -- New tables for bresto (same as brestore)
46
47 CREATE TABLE brestore_knownjobid
48 (
49      JobId integer NOT NULL,
50      CONSTRAINT brestore_knownjobid_pkey PRIMARY KEY (JobId)
51 );
52
53 CREATE TABLE brestore_pathhierarchy
54 (
55      PathId integer NOT NULL,
56      PPathId integer NOT NULL,
57      CONSTRAINT brestore_pathhierarchy_pkey PRIMARY KEY (PathId)
58 );
59
60 CREATE INDEX brestore_pathhierarchy_ppathid 
61                           ON brestore_pathhierarchy (PPathId);
62
63 CREATE TABLE brestore_pathvisibility
64 (
65       PathId integer NOT NULL,
66       JobId integer NOT NULL,
67       Size int8 DEFAULT 0,
68       Files int4 DEFAULT 0,
69       CONSTRAINT brestore_pathvisibility_pkey PRIMARY KEY (JobId, PathId)
70 );
71
72 CREATE INDEX brestore_pathvisibility_jobid
73                           ON brestore_pathvisibility (JobId);
74
75
76 CREATE TABLE bweb_user
77 (
78         userid       serial not null,
79         username     text not null,
80         use_acl      boolean default false,
81         enabled      boolean default true,
82         comment      text default '',
83         passwd       text default '',
84         tpl          text default '',
85         primary key (userid)
86 );
87 CREATE UNIQUE INDEX bweb_user_idx on bweb_user (username(255));
88
89 CREATE TABLE bweb_role
90 (
91         roleid       serial not null,
92         rolename     text not null,
93         comment      text default '',
94         primary key (roleid)
95 );
96 CREATE UNIQUE INDEX bweb_role_idx on bweb_role (rolename(255));
97 INSERT INTO bweb_role (rolename) VALUES ('r_user_mgnt');
98 INSERT INTO bweb_role (rolename) VALUES ('r_group_mgnt');
99 INSERT INTO bweb_role (rolename) VALUES ('r_configure');
100
101 INSERT INTO bweb_role (rolename) VALUES ('r_autochanger_mgnt');
102 INSERT INTO bweb_role (rolename) VALUES ('r_location_mgnt');
103 INSERT INTO bweb_role (rolename) VALUES ('r_storage_mgnt');
104 INSERT INTO bweb_role (rolename) VALUES ('r_delete_job');
105 INSERT INTO bweb_role (rolename) VALUES ('r_prune');
106 INSERT INTO bweb_role (rolename) VALUES ('r_purge');
107
108 INSERT INTO bweb_role (rolename) VALUES ('r_view_job');
109 INSERT INTO bweb_role (rolename) VALUES ('r_view_log');
110 INSERT INTO bweb_role (rolename) VALUES ('r_view_stat');
111 INSERT INTO bweb_role (rolename) VALUES ('r_view_media');
112 INSERT INTO bweb_role (rolename) VALUES ('r_view_group');
113 INSERT INTO bweb_role (rolename) VALUES ('r_view_running_job');
114
115 INSERT INTO bweb_role (rolename) VALUES ('r_run_job');
116 INSERT INTO bweb_role (rolename) VALUES ('r_cancel_job');
117 INSERT INTO bweb_role (rolename) VALUES ('r_client_status');
118
119 CREATE TABLE  bweb_role_member
120 (
121         roleid       integer not null,
122         userid       integer not null,
123         primary key (roleid, userid)
124 );
125
126 CREATE TABLE  bweb_client_group_acl
127 (
128         client_group_id       integer not null,
129         userid                integer not null,
130         primary key (client_group_id, userid)
131 );
132
133
134 -- --------------------------------------------------
135 -- Upgrade from 2.0
136 -- --------------------------------------------------
137
138 -- Manage Client groups in bweb
139 -- Works with postgresql and mysql5 
140
141 CREATE TABLE client_group
142 (
143     client_group_id             serial    not null,
144     client_group_name           text      not null,
145     comment                     text default '',
146     primary key (client_group_id)
147 );
148
149 CREATE UNIQUE INDEX client_group_idx on client_group (client_group_name(255));
150
151 CREATE TABLE client_group_member
152 (
153     client_group_id   integer     not null,
154     ClientId          integer     not null,
155     primary key (client_group_id, clientid)
156 );
157
158 CREATE INDEX client_group_member_idx on client_group_member (client_group_id);
159
160
161 --   -- creer un nouveau group
162 --   
163 --   INSERT INTO client_group (client_group_name) VALUES ('SIGMA');
164 --   
165 --   -- affecter une machine a un group
166 --   
167 --   INSERT INTO client_group_member (client_group_id, clientid) 
168 --          (SELECT client_group_id, 
169 --                 (SELECT Clientid FROM Client WHERE Name = 'slps0003-fd')
170 --             FROM client_group 
171 --            WHERE client_group_name IN ('SIGMA', 'EXPLOITATION', 'MUTUALISE'));
172 --        
173 --   
174 --   -- modifier l'affectation d'une machine
175 --   
176 --   DELETE FROM client_group_member 
177 --         WHERE clientid = (SELECT ClientId FROM Client WHERE Name = 'slps0003-fd')
178 --   
179 --   -- supprimer un groupe
180 --   
181 --   DELETE FROM client_group_member 
182 --         WHERE client_group_id = (SELECT client_group_id FROM client_group WHERE client_group_name = 'EXPLOIT')
183 --   
184 --   
185 --   -- afficher tous les clients du group SIGMA
186 --   
187 --   SELECT Name FROM Client JOIN client_group_member using (clientid) 
188 --                           JOIN client_group using (client_group_id)
189 --    WHERE client_group_name = 'SIGMA';
190 --   
191 --   -- afficher tous les groups
192 --   
193 --   SELECT client_group_name FROM client_group ORDER BY client_group_name;
194 --   
195 --   -- afficher tous les job du group SIGMA hier
196 --   
197 --   SELECT JobId, Job.Name, Client.Name, JobStatus, JobErrors
198 --     FROM Job JOIN Client              USING(ClientId) 
199 --              JOIN client_group_member USING (ClientId)
200 --              JOIN client_group        USING (client_group_id)
201 --     WHERE client_group_name = 'SIGMA'
202 --       AND Job.StartTime > '2007-03-20'; 
203 --   
204 --   -- donne des stats
205 --   
206 --   SELECT count(1) AS nb, sum(JobFiles) AS files,
207 --          sum(JobBytes) AS size, sum(JobErrors) AS joberrors,
208 --          JobStatus AS jobstatus, client_group_name
209 --     FROM Job JOIN Client              USING(ClientId) 
210 --              JOIN client_group_member USING (ClientId)
211 --              JOIN client_group        USING (client_group_id)
212 --     WHERE Job.StartTime > '2007-03-20'
213 --     GROUP BY JobStatus, client_group_name
214 --   
215 --