MEDIA filecount DB modositas
authorelgekko <vasary@elgekko.net>
Fri, 10 Mar 2023 14:55:14 +0000 (15:55 +0100)
committerelgekko <vasary@elgekko.net>
Fri, 10 Mar 2023 14:55:14 +0000 (15:55 +0100)
server/user.jobengine.osgi.db/migrations/scripts/043_add_filecount_to_media.sql
server/user.jobengine.osgi.db/migrations/scripts/044_alter_mediafile_triggers_add_mediadata.sql [new file with mode: 0644]

index a4e2ec63238f39c3643c93f19a262b2a9cc8f9cc..4acd2fdc8195e3bd5fe9dc8f1385a9d8f33b32c7 100644 (file)
@@ -5,6 +5,11 @@ DROP TRIGGER TRG_MEDIA_AFTER_UPDATE
 ALTER TABLE MEDIA ADD COLUMN FILECOUNT INT\r
 @\r
 \r
+CREATE TABLE FILECOUNTS AS \r
+(SELECT MEDIAID, MEDIAFILECOUNT FROM VW_MEDIAFILES) \r
+WITH DATA\r
+@\r
+       \r
 UPDATE MEDIA m \r
 SET    m.FILECOUNT = ( \r
        SELECT f.MEDIAFILECOUNT FROM FILECOUNTS f WHERE f.MEDIAID = m.ID\r
@@ -25,7 +30,8 @@ BEGIN ATOMIC
 END\r
 @\r
 \r
-\r
+DROP TABLE FILECOUNTS\r
+@\r
 --CALL SYSPROC.ADMIN_CMD('REORG TABLE DB2ADMIN.MEDIA')\r
 --@\r
 \r
diff --git a/server/user.jobengine.osgi.db/migrations/scripts/044_alter_mediafile_triggers_add_mediadata.sql b/server/user.jobengine.osgi.db/migrations/scripts/044_alter_mediafile_triggers_add_mediadata.sql
new file mode 100644 (file)
index 0000000..e1072d7
--- /dev/null
@@ -0,0 +1,59 @@
+-- // Modify MEDIAFILE trigger ad MEDIADATA changes\r
+-- Migration SQL that makes the change goes here.\r
+\r
+CREATE OR REPLACE TRIGGER TRG_MEDIAFILE_AFTER_INSERT \r
+AFTER INSERT ON MEDIAFILE\r
+REFERENCING NEW AS new_data\r
+FOR EACH ROW\r
+BEGIN ATOMIC\r
+       IF new_data.storeid = TSMStoreId THEN\r
+               INSERT INTO MEDIADESCRIPTION (ITEMID, MEDIAID, MEDIAFILEID, DESCRIPTION)\r
+               SELECT ITEMID, MEDIAID, MEDIAFILEID, FULLDESC(ITEMID, MEDIAID, MEDIAFILEID) FROM VW_ITEMS \r
+               WHERE MEDIAFILEID = new_data.ID;\r
+       END IF;\r
+       UPDATE MEDIA m SET m.FILECOUNT = m.FILECOUNT + 1 WHERE m.ID = new_data.MEDIAID;\r
+END\r
+@\r
+\r
+CREATE OR REPLACE TRIGGER TRG_MEDIAFILE_AFTER_DELETE \r
+AFTER DELETE ON MEDIAFILE\r
+REFERENCING OLD AS old_data\r
+FOR EACH ROW\r
+BEGIN ATOMIC\r
+       IF old_data.storeid = TSMStoreId THEN\r
+               DELETE FROM MEDIADESCRIPTION WHERE MEDIAFILEID = old_data.ID;\r
+       END IF;\r
+       UPDATE MEDIA m SET m.FILECOUNT = m.FILECOUNT - 1 WHERE m.ID = old_data.MEDIAID;\r
+END\r
+@\r
+\r
+-- //@UNDO\r
+-- SQL to undo the change goes here.\r
+CREATE OR REPLACE TRIGGER TRG_MEDIAFILE_AFTER_INSERT \r
+AFTER INSERT ON MEDIAFILE\r
+REFERENCING NEW AS n\r
+FOR EACH ROW\r
+BEGIN ATOMIC\r
+       DECLARE storeid BIGINT;\r
+       SET storeid = (SELECT ID FROM STORE WHERE NAME='TSM');\r
+       IF n.storeid = storeid THEN\r
+               INSERT INTO MEDIADESCRIPTION (ITEMID, MEDIAID, MEDIAFILEID, DESCRIPTION)\r
+               SELECT ITEMID, MEDIAID, MEDIAFILEID, FULLDESC(ITEMID, MEDIAID, MEDIAFILEID) FROM VW_ITEMS \r
+               WHERE MEDIAFILEID = N.ID;\r
+       END IF;\r
+END\r
+@\r
+\r
+CREATE OR REPLACE TRIGGER TRG_MEDIAFILE_AFTER_DELETE \r
+AFTER DELETE ON MEDIAFILE\r
+REFERENCING OLD AS O\r
+FOR EACH ROW\r
+BEGIN ATOMIC\r
+       DECLARE storeid BIGINT;\r
+       SET storeid = (SELECT ID FROM STORE WHERE NAME='TSM');\r
+       IF o.storeid = storeid THEN\r
+               DELETE FROM MEDIADESCRIPTION WHERE MEDIAFILEID = O.ID;\r
+       END IF;\r
+END\r
+@\r
+\r