]> Some of my projects - localmylist.git/commitdiff
Add rules to automate renaming of files when new data is available
authorAPTX <marek321@gmail.com>
Sun, 17 Jun 2012 14:41:08 +0000 (16:41 +0200)
committerAPTX <marek321@gmail.com>
Sun, 17 Jun 2012 14:41:08 +0000 (16:41 +0200)
localmylist/share/schema/schema.sql

index f0c8a62c1c533a7763b67d6e82a27abf9ecf7d32..f7d1c1423f868725bd3495b72521d6c590571202 100644 (file)
@@ -198,6 +198,33 @@ CREATE VIEW rename_data AS
                JOIN file_location fl ON fl.fid = f.fid
        WHERE fl.renamed IS NULL AND fl.failed_rename = false;
 
+CREATE RULE new_anime_rule AS ON INSERT TO anime DO NOTIFY rename_data_changed;
+CREATE RULE new_episode_rule AS ON INSERT TO episode DO NOTIFY rename_data_changed;
+CREATE RULE new_file_rule AS ON INSERT TO file DO NOTIFY rename_data_changed;
+
+CREATE RULE update_anime_rule AS
+       ON UPDATE TO anime
+               WHERE old.aid = new.aid
+                       AND (old.title_english <> new.title_english OR old.title_romaji <> new.title_romaji OR old.title_kanji <> new.title_kanji OR old.description <> new.description OR old.year <> new.year OR old.start_date <> new.start_date OR old.end_date <> new.end_date OR old.type::text <> new.type::text OR old.rating <> new.rating OR old.votes <> new.votes OR old.temp_rating <> new.temp_rating OR old.temp_votes <> new.temp_votes)
+       DO UPDATE file_location fl SET renamed = NULL
+               FROM file f
+                       WHERE f.fid = fl.fid AND f.aid = old.aid;
+
+CREATE RULE update_episode_rule AS
+       ON UPDATE TO episode
+               WHERE old.eid = new.eid
+                       AND (old.aid <> new.aid OR old.epno <> new.epno OR old.title_english <> new.title_english OR old.title_romaji <> new.title_romaji OR old.title_kanji <> new.title_kanji OR old.length <> new.length OR old.airdate <> new.airdate OR old.state <> new.state OR old.special <> new.special OR old.recap <> new.recap OR old.opening <> new.opening OR old.ending <> new.ending OR old.rating <> new.rating OR old.votes <> new.votes)
+       DO UPDATE file_location fl SET renamed = NULL
+               FROM file f
+               WHERE f.fid = fl.fid AND f.eid = old.eid;
+
+CREATE OR REPLACE RULE update_file_rule AS
+       ON UPDATE TO file
+               WHERE old.fid = new.fid
+                       AND (old.eid <> new.eid OR old.aid <> new.aid OR old.gid <> new.gid OR old.ed2k <> new.ed2k OR old.size <> new.size OR old.length <> new.length OR old.extension::text <> new.extension::text OR old.group_name <> new.group_name OR old.group_name_short <> new.group_name_short OR old.crc <> new.crc OR old.release_date <> new.release_date OR old.version <> new.version OR old.censored <> new.censored OR old.type::text <> new.type::text OR old.quality_id <> new.quality_id OR old.quality::text <> new.quality::text OR old.resolution::text <> new.resolution::text OR old.video_codec::text <> new.video_codec::text OR old.audio_codec::text <> new.audio_codec::text OR old.audio_language::text <> new.audio_language::text OR old.subtitle_language::text <> new.subtitle_language::text OR old.aspect_ratio::text <> new.aspect_ratio::text)
+       DO UPDATE file_location fl SET renamed = NULL
+               WHERE fl.fid = old.fid;
+
 CREATE RULE config_updated_rule AS ON UPDATE TO config DO NOTIFY config_changed;
 
 CREATE RULE file_episode_rel_ignore_duplicate AS ON INSERT TO file_episode_rel WHERE (EXISTS (SELECT 1 FROM file_episode_rel WHERE ((file_episode_rel.fid = new.fid) AND (file_episode_rel.eid = new.eid)))) DO INSTEAD NOTHING;
@@ -214,4 +241,4 @@ CREATE RULE pending_request_ignore_duplicate AS ON INSERT TO pending_request WHE
 CREATE RULE unknown_file_ignore_duplicate AS ON INSERT TO unknown_file WHERE (EXISTS (SELECT 1 FROM unknown_file WHERE ((unknown_file.ed2k = new.ed2k) AND (unknown_file.size = new.size)))) DO INSTEAD NOTHING;
 COMMENT ON RULE unknown_file_ignore_duplicate ON unknown_file IS 'Adding the same file more than once can happen';
 
-CREATE RULE new_pending_mylist_update_rule AS ON INSERT TO pending_mylist_update DO NOTIFY new_pending_mylist_update;
\ No newline at end of file
+CREATE RULE new_pending_mylist_update_rule AS ON INSERT TO pending_mylist_update DO NOTIFY new_pending_mylist_update;