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