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