-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathdeploy.sql
56 lines (45 loc) · 2.22 KB
/
deploy.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
DO (IN JSON_FILES NCLOB => ?)
BEGIN SEQUENTIAL EXECUTION
DECLARE userName NVARCHAR(100);
DECLARE IS_DELTA_DEPLOY INT;
-- Define HDI return types
DECLARE RETURN_CODE int;
DECLARE REQUEST_ID bigint;
DECLARE MESSAGES _SYS_DI.TT_MESSAGES;
DECLARE DIFF _SYS_DI.TT_FILESFOLDERS_STATUS;
-- Define HDI input types
DECLARE DELETES _SYS_DI.TT_FILESFOLDERS;
DECLARE ALL_FILES _SYS_DI.TT_FILESFOLDERS_CONTENT;
DECLARE FILES _SYS_DI.TT_FILESFOLDERS_CONTENT;
DECLARE ROOT_FOLDER _SYS_DI.TT_FILESFOLDERS;
DECLARE LIST _SYS_DI.TT_FILESFOLDERS_METADATA;
DECLARE MISSING _SYS_DI.TT_FILESFOLDERS;
DECLARE DEPLOY _SYS_DI.TT_FILESFOLDERS;
DECLARE UNDEPLOY _SYS_DI.TT_FILESFOLDERS;
DECLARE FILES_PARAMS _SYS_DI.TT_FILESFOLDERS_PARAMETERS;
NO_PARAMS = SELECT * FROM _SYS_DI.T_NO_PARAMETERS;
ALL_FILES = SELECT * FROM JSON_TABLE(:JSON_FILES, '$[*]' COLUMNS (
PATH NVARCHAR(511) PATH '$.path',
CONTENT NVARCHAR(2147483647) PATH '$.content'
));
ROOT_FOLDER = SELECT '/' AS PATH FROM DUMMY;
CALL {{{CONTAINER_NAME}}}#DI.LIST(:ROOT_FOLDER, :NO_PARAMS, :RETURN_CODE, :REQUEST_ID, :MESSAGES, :LIST);
SELECT COUNT(*) INTO IS_DELTA_DEPLOY FROM :ALL_FILES WHERE CONTENT IS NULL;
IF IS_DELTA_DEPLOY > 0 THEN
DELETES = SELECT PATH FROM :ALL_FILES WHERE CONTENT IS NULL AND PATH IN (SELECT PATH FROM :LIST);
ELSE
DELETES = SELECT PATH FROM :LIST WHERE PATH NOT IN (SELECT PATH FROM :ALL_FILES);
END IF;
CALL {{{CONTAINER_NAME}}}#DI.DELETE(:DELETES, :NO_PARAMS, :RETURN_CODE, :REQUEST_ID, :MESSAGES);
-- SELECT * FROM :MESSAGES;
FILES = SELECT * FROM :ALL_FILES WHERE CONTENT IS NOT NULL;
CALL {{{CONTAINER_NAME}}}#DI.WRITE(:FILES, :NO_PARAMS, :RETURN_CODE, :REQUEST_ID, :MESSAGES);
CALL {{{CONTAINER_NAME}}}#DI.STATUS(:LIST, :NO_PARAMS, :RETURN_CODE, :REQUEST_ID, :MESSAGES, :DIFF);
-- SELECT * FROM :DIFF; -- Return the changed files
-- SELECT * FROM :DELETES;
UNDEPLOY = SELECT PATH FROM :DIFF WHERE STATUS = 'D';
-- DEPLOY = SELECT PATH FROM :ALL_FILES;
-- UNDEPLOY = SELECT PATH FROM :ALL_FILES WHERE CONTENT IS NULL;
CALL {{{CONTAINER_NAME}}}#DI.MAKE(:FILES, :UNDEPLOY, :FILES_PARAMS, :NO_PARAMS, :RETURN_CODE, :REQUEST_ID, :MESSAGES);
SELECT * FROM :MESSAGES; -- Return the make log messages
END;