Merge "Updated Cloud Guide with links to wiki"
[oom.git] / kubernetes / clamp / charts / mariadb / resources / config / mariadb / docker-entrypoint-initdb.d / bulkload / clds-stored-procedures.sql
1 /* Copyright © 2017 AT&T, Amdocs, Bell Canada
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *       http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #
17 # CLDS stored procedures
18 #
19
20 USE cldsdb4;
21
22 DROP PROCEDURE IF EXISTS upd_event;
23 DROP PROCEDURE IF EXISTS ins_event;
24 DROP PROCEDURE IF EXISTS del_all_model_instances;
25 DROP PROCEDURE IF EXISTS del_model_instance;
26 DROP PROCEDURE IF EXISTS ins_model_instance;
27 DROP PROCEDURE IF EXISTS set_model;
28 DROP PROCEDURE IF EXISTS get_model;
29 DROP PROCEDURE IF EXISTS get_model_template;
30 DROP PROCEDURE IF EXISTS set_template;
31 DROP PROCEDURE IF EXISTS get_template;
32 DELIMITER //
33 CREATE PROCEDURE get_template
34   (IN v_template_name VARCHAR(80),
35    OUT v_template_id VARCHAR(36),
36    OUT v_template_bpmn_id VARCHAR(36),
37    OUT v_template_bpmn_user_id VARCHAR(80),
38    OUT v_template_bpmn_text MEDIUMTEXT,
39    OUT v_template_image_id VARCHAR(36),
40    OUT v_template_image_user_id VARCHAR(80),
41    OUT v_template_image_text MEDIUMTEXT,
42    OUT v_template_doc_id VARCHAR(36),
43    OUT v_template_doc_user_id VARCHAR(80),
44    OUT v_template_doc_text MEDIUMTEXT)
45 BEGIN
46   SELECT t.template_id,
47                  tb.template_bpmn_id,
48                  tb.user_id,
49                  tb.template_bpmn_text,
50                  ti.template_image_id,
51                  ti.user_id,
52                  ti.template_image_text,
53                  td.template_doc_id,
54                  td.user_id,
55                  td.template_doc_text
56     INTO v_template_id,
57          v_template_bpmn_id,
58          v_template_bpmn_user_id,
59          v_template_bpmn_text,
60          v_template_image_id,
61          v_template_image_user_id,
62          v_template_image_text,
63          v_template_doc_id,
64          v_template_doc_user_id,
65          v_template_doc_text
66     FROM template t,
67          template_bpmn tb,
68                  template_image ti,
69                  template_doc td
70     WHERE t.template_bpmn_id = tb.template_bpmn_id
71           AND t.template_image_id = ti.template_image_id
72           AND t.template_doc_id = td.template_doc_id
73       AND t.template_name = v_template_name;
74 END;
75 CREATE PROCEDURE set_template
76   (IN v_template_name VARCHAR(80),
77    IN v_user_id VARCHAR(80),
78    IN v_template_bpmn_text MEDIUMTEXT,
79    IN v_template_image_text MEDIUMTEXT,
80    IN v_template_doc_text MEDIUMTEXT,
81    OUT v_template_id VARCHAR(36),
82    OUT v_template_bpmn_id VARCHAR(36),
83    OUT v_template_bpmn_user_id VARCHAR(80),
84    OUT v_template_image_id VARCHAR(36),
85    OUT v_template_image_user_id VARCHAR(80),
86    OUT v_template_doc_id VARCHAR(36),
87    OUT v_template_doc_user_id VARCHAR(80))
88 BEGIN
89   DECLARE v_old_template_bpmn_text MEDIUMTEXT;
90   DECLARE v_old_template_image_text MEDIUMTEXT;
91   DECLARE v_old_template_doc_text MEDIUMTEXT;
92   SET v_template_id = NULL;
93   CALL get_template(
94     v_template_name,
95     v_template_id,
96     v_template_bpmn_id,
97     v_template_bpmn_user_id,
98     v_old_template_bpmn_text,
99     v_template_image_id,
100     v_template_image_user_id,
101     v_old_template_image_text,
102     v_template_doc_id,
103     v_template_doc_user_id,
104     v_old_template_doc_text);
105   IF v_template_id IS NULL THEN
106     BEGIN
107           SET v_template_id = UUID();
108       INSERT INTO template
109             (template_id, template_name)
110             VALUES (v_template_id, v_template_name);
111         END;
112   END IF;
113   IF v_template_bpmn_id IS NULL OR v_template_bpmn_text <> v_old_template_bpmn_text THEN
114         SET v_template_bpmn_id = UUID();
115     INSERT INTO template_bpmn
116           (template_bpmn_id, template_id, template_bpmn_text, user_id)
117           VALUES (v_template_bpmn_id, v_template_id, v_template_bpmn_text, v_user_id);
118         SET v_template_bpmn_user_id = v_user_id;
119   END IF;
120   IF v_template_image_id IS NULL OR v_template_image_text <> v_old_template_image_text THEN
121         SET v_template_image_id = UUID();
122     INSERT INTO template_image
123           (template_image_id, template_id, template_image_text, user_id)
124           VALUES (v_template_image_id, v_template_id, v_template_image_text, v_user_id);
125         SET v_template_image_user_id = v_user_id;
126   END IF;
127   IF v_template_doc_id IS NULL OR v_template_doc_text <> v_old_template_doc_text THEN
128         SET v_template_doc_id = UUID();
129     INSERT INTO template_doc
130           (template_doc_id, template_id, template_doc_text, user_id)
131           VALUES (v_template_doc_id, v_template_id, v_template_doc_text, v_user_id);
132         SET v_template_doc_user_id = v_user_id;
133   END IF;
134   UPDATE template
135     SET template_bpmn_id = v_template_bpmn_id,
136             template_image_id = v_template_image_id,
137             template_doc_id = v_template_doc_id
138     WHERE template_id = v_template_id;
139 END;
140 CREATE PROCEDURE get_model
141   (IN v_model_name VARCHAR(80),
142    OUT v_control_name_prefix VARCHAR(80),
143    INOUT v_control_name_uuid VARCHAR(36),
144    OUT v_model_id VARCHAR(36),
145    OUT v_service_type_id VARCHAR(80),
146    OUT v_deployment_id VARCHAR(80),
147    OUT v_template_name VARCHAR(80),
148    OUT v_template_id VARCHAR(36),
149    OUT v_model_prop_id VARCHAR(36),
150    OUT v_model_prop_user_id VARCHAR(80),
151    OUT v_model_prop_text MEDIUMTEXT,
152    OUT v_model_blueprint_id VARCHAR(36),
153    OUT v_model_blueprint_user_id VARCHAR(80),
154    OUT v_model_blueprint_text MEDIUMTEXT,
155    OUT v_event_id VARCHAR(36),
156    OUT v_action_cd VARCHAR(80),
157    OUT v_action_state_cd VARCHAR(80),
158    OUT v_event_process_instance_id VARCHAR(80),
159    OUT v_event_user_id VARCHAR(80))
160 BEGIN
161   SELECT m.control_name_prefix,
162                  m.control_name_uuid,
163                  m.model_id,
164                  m.service_type_id,
165                  m.deployment_id,
166                  t.template_name,
167                  m.template_id,
168                  mp.model_prop_id,
169                  mp.user_id,
170                  mp.model_prop_text,
171                  mb.model_blueprint_id,
172                  mb.user_id,
173                  mb.model_blueprint_text,
174                  e.event_id,
175                  e.action_cd,
176                  e.action_state_cd,
177                  e.process_instance_id,
178                  e.user_id
179     INTO v_control_name_prefix,
180          v_control_name_uuid,
181                  v_model_id,
182                  v_service_type_id,
183                  v_deployment_id,
184                  v_template_name,
185          v_template_id,
186          v_model_prop_id,
187          v_model_prop_user_id,
188          v_model_prop_text,
189          v_model_blueprint_id,
190          v_model_blueprint_user_id,
191          v_model_blueprint_text,
192          v_event_id,
193          v_action_cd,
194                  v_action_state_cd,
195          v_event_process_instance_id,
196          v_event_user_id
197     FROM model m,
198                  template t,
199                  model_properties mp,
200                  model_blueprint mb,
201                  event e
202     WHERE m.template_id = t.template_id
203           AND m.model_prop_id = mp.model_prop_id
204           AND m.model_blueprint_id = mb.model_blueprint_id
205           AND m.event_id = e.event_id
206       AND (m.model_name = v_model_name
207       OR  m.control_name_uuid = v_control_name_uuid);
208     SELECT model_instance_id,
209            vm_name,
210            location,
211            timestamp
212     FROM model_instance
213     WHERE model_id = v_model_id
214     ORDER BY 2;
215 END;
216 CREATE PROCEDURE get_model_template
217   (IN v_model_name VARCHAR(80),
218    OUT v_control_name_prefix VARCHAR(80),
219    INOUT v_control_name_uuid VARCHAR(36),
220    OUT v_model_id VARCHAR(36),
221    OUT v_service_type_id VARCHAR(80),
222    OUT v_deployment_id VARCHAR(80),
223    OUT v_template_name VARCHAR(80),
224    OUT v_template_id VARCHAR(36),
225    OUT v_model_prop_id VARCHAR(36),
226    OUT v_model_prop_user_id VARCHAR(80),
227    OUT v_model_prop_text MEDIUMTEXT,
228    OUT v_model_blueprint_id VARCHAR(36),
229    OUT v_model_blueprint_user_id VARCHAR(80),
230    OUT v_model_blueprint_text MEDIUMTEXT,
231    OUT v_template_bpmn_id VARCHAR(36),
232    OUT v_template_bpmn_user_id VARCHAR(80),
233    OUT v_template_bpmn_text MEDIUMTEXT,
234    OUT v_template_image_id VARCHAR(36),
235    OUT v_template_image_user_id VARCHAR(80),
236    OUT v_template_image_text MEDIUMTEXT,
237    OUT v_template_doc_id VARCHAR(36),
238    OUT v_template_doc_user_id VARCHAR(80),
239    OUT v_template_doc_text MEDIUMTEXT,
240    OUT v_event_id VARCHAR(36),
241    OUT v_action_cd VARCHAR(80),
242    OUT v_action_state_cd VARCHAR(80),
243    OUT v_event_process_instance_id VARCHAR(80),
244    OUT v_event_user_id VARCHAR(80))
245 BEGIN
246   CALL get_model(
247     v_model_name,
248     v_control_name_prefix,
249     v_control_name_uuid,
250     v_model_id,
251         v_service_type_id,
252         v_deployment_id,
253     v_template_name,
254     v_template_id,
255     v_model_prop_id,
256     v_model_prop_user_id,
257     v_model_prop_text,
258     v_model_blueprint_id,
259     v_model_blueprint_user_id,
260     v_model_blueprint_text,
261         v_event_id,
262         v_action_cd,
263         v_action_state_cd,
264         v_event_process_instance_id,
265         v_event_user_id);
266   CALL get_template(
267     v_template_name,
268     v_template_id,
269     v_template_bpmn_id,
270     v_template_bpmn_user_id,
271     v_template_bpmn_text,
272     v_template_image_id,
273     v_template_image_user_id,
274     v_template_image_text,
275     v_template_doc_id,
276     v_template_doc_user_id,
277     v_template_doc_text);
278   END;
279 CREATE PROCEDURE set_model
280   (IN v_model_name VARCHAR(80),
281    IN v_template_id VARCHAR(36),
282    IN v_user_id VARCHAR(80),
283    IN v_model_prop_text MEDIUMTEXT,
284    IN v_model_blueprint_text MEDIUMTEXT,
285    IN v_service_type_id VARCHAR(80),
286    IN v_deployment_id VARCHAR(80),
287    INOUT v_control_name_prefix VARCHAR(80),
288    INOUT v_control_name_uuid VARCHAR(36),
289    OUT v_model_id VARCHAR(36),
290    OUT v_model_prop_id VARCHAR(36),
291    OUT v_model_prop_user_id VARCHAR(80),
292    OUT v_model_blueprint_id VARCHAR(36),
293    OUT v_model_blueprint_user_id VARCHAR(80),
294    OUT v_event_id VARCHAR(36),
295    OUT v_action_cd VARCHAR(80),
296    OUT v_action_state_cd VARCHAR(80),
297    OUT v_event_process_instance_id VARCHAR(80),
298    OUT v_event_user_id VARCHAR(80))
299 BEGIN
300   DECLARE v_old_template_name VARCHAR(80);
301   DECLARE v_old_template_id VARCHAR(36);
302   DECLARE v_old_control_name_prefix VARCHAR(80);
303   DECLARE v_old_control_name_uuid VARCHAR(36);
304   DECLARE v_old_model_prop_text MEDIUMTEXT;
305   DECLARE v_old_model_blueprint_text MEDIUMTEXT;
306   DECLARE v_old_service_type_id VARCHAR(80);
307   DECLARE v_old_deployment_id VARCHAR(80);
308   SET v_model_id = NULL;
309   CALL get_model(
310     v_model_name,
311     v_old_control_name_prefix,
312     v_old_control_name_uuid,
313     v_model_id,
314         v_old_service_type_id,
315         v_old_deployment_id,
316     v_old_template_name,
317     v_old_template_id,
318     v_model_prop_id,
319     v_model_prop_user_id,
320     v_old_model_prop_text,
321     v_model_blueprint_id,
322     v_model_blueprint_user_id,
323     v_old_model_blueprint_text,
324         v_event_id,
325         v_action_cd,
326         v_action_state_cd,
327         v_event_process_instance_id,
328         v_event_user_id);
329   IF v_model_id IS NULL THEN
330     BEGIN
331       # UUID can be provided initially but cannot be updated
332           # if not provided (this is expected) then it will be set here
333       IF v_control_name_uuid IS NULL THEN
334             SET v_control_name_uuid = UUID();
335           END IF;
336       SET v_model_id = v_control_name_uuid;
337       INSERT INTO model
338             (model_id, model_name, template_id, control_name_prefix, control_name_uuid, service_type_id, deployment_id)
339             VALUES (v_model_id, v_model_name, v_template_id, v_control_name_prefix, v_control_name_uuid, v_service_type_id, v_deployment_id);
340           # since just created model, insert CREATED event as initial default event
341           SET v_action_cd = 'CREATE';
342           SET v_action_state_cd = 'COMPLETED';
343           SET v_event_user_id = v_user_id;
344       SET v_event_id = UUID();
345       INSERT INTO event
346             (event_id, model_id, action_cd, action_state_cd, user_id)
347             VALUES (v_event_id, v_model_id, v_action_cd, v_action_state_cd, v_event_user_id);
348           UPDATE model
349                 SET event_id = v_event_id
350                 WHERE model_id = v_model_id;
351         END;
352   ELSE
353     BEGIN
354           # use old control_name_prefix if null value is provided
355       IF v_control_name_prefix IS NULL THEN
356              SET v_control_name_prefix = v_old_control_name_prefix;
357           END IF;
358           # UUID can not be updated after initial insert
359           SET v_control_name_uuid = v_old_control_name_uuid;
360         END;
361   END IF;
362   IF v_model_prop_id IS NULL OR v_model_prop_text <> v_old_model_prop_text THEN
363         SET v_model_prop_id = UUID();
364     INSERT INTO model_properties
365           (model_prop_id, model_id, model_prop_text, user_id)
366           VALUES (v_model_prop_id, v_model_id, v_model_prop_text, v_user_id);
367         SET v_model_prop_user_id = v_user_id;
368   END IF;
369   IF v_model_blueprint_id IS NULL OR v_model_blueprint_text <> v_old_model_blueprint_text THEN
370         SET v_model_blueprint_id = UUID();
371     INSERT INTO model_blueprint
372           (model_blueprint_id, model_id, model_blueprint_text, user_id)
373           VALUES (v_model_blueprint_id, v_model_id, v_model_blueprint_text, v_user_id);
374         SET v_model_blueprint_user_id = v_user_id;
375   END IF;
376   UPDATE model
377     SET control_name_prefix = v_control_name_prefix,
378             model_prop_id = v_model_prop_id,
379             model_blueprint_id = v_model_blueprint_id,
380             service_type_id = v_service_type_id,
381             deployment_id = v_deployment_id
382     WHERE model_id = v_model_id;
383 END;
384 CREATE PROCEDURE ins_model_instance
385   (IN v_control_name_uuid VARCHAR(36),
386    IN v_vm_name VARCHAR(250),
387    IN v_location VARCHAR(250),
388    OUT v_model_id VARCHAR(36),
389    OUT v_model_instance_id VARCHAR(36))
390 BEGIN
391    SELECT m.model_id
392     INTO v_model_id
393     FROM model m
394     WHERE m.control_name_uuid = v_control_name_uuid;
395   SET v_model_instance_id = UUID();
396   INSERT INTO model_instance
397         (model_instance_id, model_id, vm_name, location)
398         VALUES (v_model_instance_id, v_model_id, v_vm_name, v_location);
399 END;
400 CREATE PROCEDURE del_model_instance
401   (IN v_control_name_uuid VARCHAR(36),
402    IN v_vm_name VARCHAR(250),
403    OUT v_model_id VARCHAR(36),
404    OUT v_model_instance_id VARCHAR(36))
405 BEGIN
406    SELECT m.model_id, i.model_instance_id
407     INTO v_model_id,
408          v_model_instance_id
409     FROM model m,
410          model_instance i
411     WHERE m.model_id = i.model_id
412      AND  m.control_name_uuid = v_control_name_uuid
413      AND  i.vm_name = v_vm_name;
414   DELETE FROM model_instance
415   WHERE model_instance_id = v_model_instance_id;
416 END;
417 CREATE PROCEDURE del_all_model_instances
418   (IN v_control_name_uuid VARCHAR(36),
419    OUT v_model_id VARCHAR(36))
420 BEGIN
421   SELECT m.model_id
422     INTO v_model_id
423     FROM model m
424     WHERE m.control_name_uuid = v_control_name_uuid;
425   DELETE FROM model_instance
426   WHERE model_id = v_model_id;
427 END;
428 CREATE PROCEDURE ins_event
429   (IN v_model_name VARCHAR(80),
430    IN v_control_name_prefix VARCHAR(80),
431    IN v_control_name_uuid VARCHAR(36),
432    IN v_user_id VARCHAR(80),
433    IN v_action_cd VARCHAR(80),
434    IN v_action_state_cd VARCHAR(80),
435    IN v_process_instance_id VARCHAR(80),
436    OUT v_model_id VARCHAR(36),
437    OUT v_event_id VARCHAR(36))
438 BEGIN
439   DECLARE v_prev_event_id VARCHAR(36);
440   SELECT m.model_id,
441                  m.event_id
442     INTO v_model_id,
443          v_prev_event_id
444     FROM model m
445     WHERE m.model_name = v_model_name
446           OR  m.control_name_uuid = v_control_name_uuid;
447   SET v_event_id = UUID();
448   INSERT INTO event
449         (event_id, model_id, action_cd, action_state_cd, prev_event_id, process_instance_id, user_id)
450         VALUES (v_event_id, v_model_id, v_action_cd, v_action_state_cd, v_prev_event_id, v_process_instance_id, v_user_id);
451   UPDATE model
452         SET event_id = v_event_id
453         WHERE model_id = v_model_id;
454 END;
455 CREATE PROCEDURE upd_event
456   (IN v_event_id VARCHAR(36),
457    IN v_process_instance_id VARCHAR(80))
458 BEGIN
459   UPDATE event
460         SET process_instance_id = v_process_instance_id
461         WHERE event_id = v_event_id;
462 END
463 //
464 DELIMITER ;