2024-10-29_14-25-10_CET
This commit is contained in:
149
feed_watcher/feedWatcher_schema.sql
Normal file
149
feed_watcher/feedWatcher_schema.sql
Normal file
@@ -0,0 +1,149 @@
|
||||
--
|
||||
-- feedWatcher_schema.sql - version 0.0.9
|
||||
--
|
||||
-- Renamed 'feedWatcher.sql' => `feedWatcher_schema.sql' on 2020-01-18
|
||||
--
|
||||
|
||||
/*
|
||||
* Table 'urls'
|
||||
* ------------
|
||||
*
|
||||
* The main table containing host, http and feed information
|
||||
*/
|
||||
|
||||
DROP TABLE IF EXISTS episodes;
|
||||
|
||||
CREATE TABLE urls (
|
||||
id integer PRIMARY KEY,
|
||||
url varchar(1024) NOT NULL,
|
||||
dns text,
|
||||
host_up boolean DEFAULT 0,
|
||||
http_status varchar(80),
|
||||
content_type varchar(40),
|
||||
urltype varchar(40),
|
||||
feedformat varchar(20),
|
||||
title varchar(1024),
|
||||
description text,
|
||||
author varchar(80),
|
||||
modified timestamp,
|
||||
link varchar(1024),
|
||||
image varchar(1024),
|
||||
copyright varchar(80),
|
||||
generator varchar(80),
|
||||
language varchar(40),
|
||||
last_update timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP)
|
||||
);
|
||||
|
||||
--
|
||||
-- Ensure the 'url' column is unique
|
||||
--
|
||||
|
||||
DROP INDEX IF EXISTS url_index;
|
||||
|
||||
CREATE UNIQUE INDEX url_index ON urls ( url );
|
||||
|
||||
--
|
||||
-- Trigger to update the 'last_update' field every time the row changes
|
||||
--
|
||||
|
||||
DROP TRIGGER IF EXISTS urls_last_updated;
|
||||
|
||||
CREATE TRIGGER urls_last_updated AFTER UPDATE ON urls
|
||||
BEGIN
|
||||
UPDATE urls SET last_update = datetime('now');
|
||||
END;
|
||||
|
||||
/*
|
||||
* Table 'episodes'
|
||||
* ----------------
|
||||
*
|
||||
* Has a foreign key relationship with table 'urls'. If the matching row in
|
||||
* 'urls' is deleted the deletion cascades to this table (ON DELETE CASCADE).
|
||||
* If the primary key in 'urls' is updated the relationship prevents this
|
||||
* change (ON UPDATE RESTRICT).
|
||||
*/
|
||||
|
||||
DROP TABLE IF EXISTS episodes;
|
||||
|
||||
CREATE TABLE episodes (
|
||||
id integer PRIMARY KEY,
|
||||
urls_id integer NOT NULL
|
||||
REFERENCES urls (id)
|
||||
ON DELETE CASCADE
|
||||
ON UPDATE RESTRICT,
|
||||
link varchar(1024),
|
||||
enclosure varchar(256),
|
||||
title varchar(256),
|
||||
author varchar(256),
|
||||
category text,
|
||||
source varchar(128),
|
||||
ep_id varchar(256),
|
||||
issued timestamp,
|
||||
modified timestamp,
|
||||
byte_length bigint,
|
||||
mime_type varchar(64),
|
||||
last_update timestamp NOT NULL DEFAULT (CURRENT_TIMESTAMP)
|
||||
);
|
||||
|
||||
--
|
||||
-- Ensure the 'enclosure' column is unique (per feed)
|
||||
--
|
||||
|
||||
DROP INDEX IF EXISTS enclosure_index;
|
||||
|
||||
CREATE UNIQUE INDEX enclosure_index ON episodes ( urls_id, enclosure );
|
||||
|
||||
--
|
||||
-- Trigger to update the 'last_update' field every time the row changes
|
||||
--
|
||||
|
||||
DROP TRIGGER IF EXISTS episodes_last_updated;
|
||||
|
||||
CREATE TRIGGER episodes_last_updated AFTER UPDATE ON episodes
|
||||
BEGIN
|
||||
UPDATE episodes SET last_update = datetime('now');
|
||||
END;
|
||||
|
||||
--
|
||||
-- View to simplify joining the two tables.
|
||||
--
|
||||
|
||||
DROP VIEW IF EXISTS all_episodes;
|
||||
|
||||
CREATE VIEW all_episodes AS
|
||||
SELECT
|
||||
urls.id as urls_id,
|
||||
urls.url as urls_url,
|
||||
urls.dns as urls_dns,
|
||||
urls.host_up as urls_host_up,
|
||||
urls.http_status as urls_http_status,
|
||||
urls.content_type as urls_content_type,
|
||||
urls.urltype as urls_urltype,
|
||||
urls.feedformat as urls_feedformat,
|
||||
urls.title as urls_title,
|
||||
urls.description as urls_description,
|
||||
urls.author as urls_author,
|
||||
urls.modified as urls_modified,
|
||||
urls.link as urls_link,
|
||||
urls.image as urls_image,
|
||||
urls.copyright as urls_copyright,
|
||||
urls.generator as urls_generator,
|
||||
urls.language as urls_language,
|
||||
urls.last_update as urls_last_update,
|
||||
ep.id as ep_id,
|
||||
ep.urls_id as ep_urls_id,
|
||||
ep.link as ep_link,
|
||||
ep.enclosure as ep_enclosure,
|
||||
ep.title as ep_title,
|
||||
ep.author as ep_author,
|
||||
ep.category as ep_category,
|
||||
ep.source as ep_source,
|
||||
ep.ep_id as ep_ep_id,
|
||||
ep.issued as ep_issued,
|
||||
ep.modified as ep_modified,
|
||||
ep.byte_length as ep_byte_length,
|
||||
ep.mime_type as ep_mime_type,
|
||||
ep.last_update as ep_last_update
|
||||
FROM urls LEFT JOIN episodes ep ON urls.id = ep.urls_id;
|
||||
|
||||
-- vim: syntax=sql:ts=8:ai:tw=78:et:fo=tcrqn21:comments+=b\:--
|
Reference in New Issue
Block a user