From 81699b691936523f170cf5fd53727765025ba49d Mon Sep 17 00:00:00 2001 From: James Tombleson Date: Fri, 26 Apr 2024 16:02:36 -0700 Subject: [PATCH] Reworked migrations and added the user and refresh token tables --- .../migrations/20220522083756_init.sql | 72 ----------- .../migrations/20220529082459_seed.sql | 50 -------- .../20220619085634_subscriptions.sql | 21 --- .../20221207213427_source_delete.sql | 11 -- .../migrations/20240425083756_init.sql | 121 ++++++++++++++++++ .../migrations/20240425092459_seed.sql | 50 ++++++++ 6 files changed, 171 insertions(+), 154 deletions(-) delete mode 100644 internal/database/migrations/20220522083756_init.sql delete mode 100644 internal/database/migrations/20220529082459_seed.sql delete mode 100644 internal/database/migrations/20220619085634_subscriptions.sql delete mode 100644 internal/database/migrations/20221207213427_source_delete.sql create mode 100644 internal/database/migrations/20240425083756_init.sql create mode 100644 internal/database/migrations/20240425092459_seed.sql diff --git a/internal/database/migrations/20220522083756_init.sql b/internal/database/migrations/20220522083756_init.sql deleted file mode 100644 index e0bb875..0000000 --- a/internal/database/migrations/20220522083756_init.sql +++ /dev/null @@ -1,72 +0,0 @@ --- +goose Up --- +goose StatementBegin -SELECT 'up SQL query'; -CREATE TABLE Articles ( - ID uuid PRIMARY KEY, - SourceId uuid NOT null, - Tags TEXT NOT NULL, - Title TEXT NOT NULL, - Url TEXT NOT NULL, - PubDate timestamp NOT NULL, - Video TEXT, - VideoHeight int NOT NULL, - VideoWidth int NOT NULL, - Thumbnail TEXT NOT NULL, - Description TEXT NOT NULL, - AuthorName TEXT, - AuthorImage TEXT -); - -CREATE Table DiscordQueue ( - ID uuid PRIMARY KEY, - ArticleId uuid NOT NULL -); - -CREATE Table DiscordWebHooks ( - ID uuid PRIMARY KEY, - Name TEXT NOT NULL, -- Defines webhook purpose - Key TEXT, - Url TEXT NOT NULL, -- Webhook Url - Server TEXT NOT NULL, -- Defines the server its bound it. Used for refrence - Channel TEXT NOT NULL, -- Defines the channel its bound to. Used for refrence - Enabled BOOLEAN NOT NULL -); - -CREATE Table Icons ( - ID uuid PRIMARY Key, - FileName TEXT NOT NULL, - Site TEXT NOT NULL -); - -Create Table Settings ( - ID uuid PRIMARY Key, - Key TEXT NOT NULL, -- How you search for a entry - Value TEXT NOT NULL, -- The value for one - Options TEXT -- any notes about the entry -); - -Create Table Sources ( - ID uuid PRIMARY Key, - Site TEXT NOT NULL, -- Vanity name - Name TEXT NOT NULL, -- Defines the name of the source. IE: dadjokes - Source TEXT NOT NULL, -- Defines the service that will use this reocrd. IE reddit or youtube - Type TEXT NOT NULL, -- Defines what kind of feed this is. feed, user, tag - Value TEXT, - Enabled BOOLEAN NOT NULL, - Url TEXT NOT NULL, - Tags TEXT NOT NULL -); - - - --- +goose StatementEnd - --- +goose Down --- +goose StatementBegin -Drop Table Articles; -Drop Table DiscordQueue; -Drop Table DiscordWebHooks; -Drop Table Icons; -Drop Table Settings; -Drop Table Sources; --- +goose StatementEnd diff --git a/internal/database/migrations/20220529082459_seed.sql b/internal/database/migrations/20220529082459_seed.sql deleted file mode 100644 index 29da683..0000000 --- a/internal/database/migrations/20220529082459_seed.sql +++ /dev/null @@ -1,50 +0,0 @@ --- +goose Up --- +goose StatementBegin -SELECT 'up SQL query'; - --- Enable UUID's -CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; - --- Final Fantasy XIV Entries -INSERT INTO sources VALUES -(uuid_generate_v4(), 'ffxiv', 'Final Fantasy XIV - NA', 'ffxiv', 'scrape', 'a', TRUE, 'https://na.finalfantasyxiv.com/lodestone/', 'ffxiv, final, fantasy, xiv, na, lodestone'); -INSERT INTO sources VALUES -(uuid_generate_v4(), 'ffxiv', 'Final Fantasy XIV - JP', 'ffxiv', 'scrape', 'a', FALSE, 'https://jp.finalfantasyxiv.com/lodestone/', 'ffxiv, final, fantasy, xiv, jp, lodestone'); -INSERT INTO sources VALUES -(uuid_generate_v4(), 'ffxiv', 'Final Fantasy XIV - EU', 'ffxiv', 'scrape', 'a', FALSE, 'https://eu.finalfantasyxiv.com/lodestone/', 'ffxiv, final, fantasy, xiv, eu, lodestone'); -INSERT INTO sources VALUES -(uuid_generate_v4(), 'ffxiv', 'Final Fantasy XIV - FR', 'ffxiv', 'scrape', 'a', FALSE, 'https://fr.finalfantasyxiv.com/lodestone/', 'ffxiv, final, fantasy, xiv, fr, lodestone'); -INSERT INTO sources VALUES -(uuid_generate_v4(), 'ffxiv', 'Final Fantasy XIV - DE', 'ffxiv', 'scrape', 'a', FALSE, 'https://de.finalfantasyxiv.com/lodestone/', 'ffxiv, final, fantasy, xiv, de, lodestone'); - --- Reddit Entries -INSERT INTO sources VALUES -(uuid_generate_v4(), 'reddit', 'dadjokes', 'reddit', 'feed', 'a', TRUE, 'https://reddit.com/r/dadjokes', 'reddit, dadjokes'); -INSERT INTO sources VALUES -(uuid_generate_v4(), 'reddit', 'steamdeck', 'reddit', 'feed', 'a', TRUE, 'https://reddit.com/r/steamdeck', 'reddit, steam deck, steam, deck'); - --- Youtube Entries -INSERT INTO sources VALUES -(uuid_generate_v4(), 'youtube', 'Game Grumps', 'youtube', 'feed', 'a', TRUE, 'https://www.youtube.com/user/GameGrumps', 'youtube, game grumps, game, grumps'); - --- RSS Entries -INSERT INTO sources VALUES -(uuid_generate_v4(), 'steampowered', 'steam deck', 'rss', 'feed', 'a', TRUE, 'https://store.steampowered.com/feeds/news/app/1675200/?cc=US&l=english&snr=1_2108_9__2107', 'rss, steampowered, steam, deck, steam deck'); - --- Twitch Entries -INSERT INTO sources VALUES -(uuid_generate_v4(), 'twitch', 'Nintendo', 'twitch', 'api', 'a', TRUE, 'https://twitch.tv/nintendo', 'twitch, nintendo'); - --- +goose StatementEnd - --- +goose Down --- +goose StatementBegin ---SELECT 'down SQL query'; - -DELETE FROM sources where source = 'reddit' and name = 'dadjokes'; -DELETE FROM sources where source = 'reddit' and name = 'steamdeck'; -DELETE FROM sources where source = 'ffxiv'; -DELETE FROM sources WHERE source = 'twitch' and name = 'Nintendo'; -DELETE FROM sources WHERE source = 'youtube' and name = 'Game Grumps'; -DELETE FROM SOURCES WHERE source = 'rss' and name = 'steam deck'; --- +goose StatementEnd diff --git a/internal/database/migrations/20220619085634_subscriptions.sql b/internal/database/migrations/20220619085634_subscriptions.sql deleted file mode 100644 index 16bf429..0000000 --- a/internal/database/migrations/20220619085634_subscriptions.sql +++ /dev/null @@ -1,21 +0,0 @@ --- +goose Up --- +goose StatementBegin -SELECT 'up SQL query'; -Create TABLE Subscriptions ( - ID uuid Primary Key, - DiscordWebHookID uuid Not Null, - SourceID uuid Not Null -); - -ALTER TABLE discordwebhooks drop COLUMN Name; -ALTER TABLE discordwebhooks drop COLUMN Key; - --- +goose StatementEnd - --- +goose Down --- +goose StatementBegin -SELECT 'down SQL query'; -Drop Table Subscriptions; -ALTER TABLE discordwebhooks Add COLUMN Name TEXT; ---ALTER TABLE discordwebhooks Add COLUMN Key TEXT; --- +goose StatementEnd diff --git a/internal/database/migrations/20221207213427_source_delete.sql b/internal/database/migrations/20221207213427_source_delete.sql deleted file mode 100644 index 3130bda..0000000 --- a/internal/database/migrations/20221207213427_source_delete.sql +++ /dev/null @@ -1,11 +0,0 @@ --- +goose Up --- +goose StatementBegin -SELECT 'up SQL query'; -ALTER TABLE sources Add COLUMN Deleted BOOLEAN; --- +goose StatementEnd - --- +goose Down --- +goose StatementBegin -SELECT 'down SQL query'; -ALTER TABLE sources Drop Deleted Deleted BOOLEAN; --- +goose StatementEnd diff --git a/internal/database/migrations/20240425083756_init.sql b/internal/database/migrations/20240425083756_init.sql new file mode 100644 index 0000000..5da446a --- /dev/null +++ b/internal/database/migrations/20240425083756_init.sql @@ -0,0 +1,121 @@ +-- +goose Up +-- +goose StatementBegin +SELECT 'up SQL query'; +CREATE TABLE Articles ( + ID INTEGER PRIMARY KEY AUTOINCREMENT, + CreatedAt DATETIME NOT NULL, + LastUpdated DATETIME NOT NULL, + DeletedAt DATETIME, + SourceId NUMBER NOT NULL, + Tags TEXT NOT NULL, + Title TEXT NOT NULL, + Url TEXT NOT NULL, + PubDate DATETIME NOT NULL, + Video TEXT, + VideoHeight int NOT NULL, + VideoWidth int NOT NULL, + Thumbnail TEXT NOT NULL, + Description TEXT NOT NULL, + AuthorName TEXT, + AuthorImageUrl TEXT +); + +CREATE Table DiscordQueue ( + ID INTEGER PRIMARY KEY AUTOINCREMENT, + CreatedAt DATETIME NOT NULL, + UpdatedAt DATETIME NOT NULL, + DeletedAt DATETIME, + ArticleId NUMBER NOT NULL, + SourceId NUMBER NOT NULL +); + +CREATE Table DiscordWebHooks ( + ID INTEGER PRIMARY KEY AUTOINCREMENT, + CreatedAt DATETIME NOT NULL, + UpdatedAt DATETIME NOT NULL, + DeletedAt DATETIME, + --Name TEXT NOT NULL, -- Defines webhook purpose + --Key TEXT, + Url TEXT NOT NULL, -- Webhook Url + Server TEXT NOT NULL, -- Defines the server its bound it. Used for refrence + Channel TEXT NOT NULL, -- Defines the channel its bound to. Used for refrence + Enabled BOOLEAN NOT NULL +); + +CREATE Table Icons ( + ID INTEGER PRIMARY KEY AUTOINCREMENT, + CreatedAt DATETIME NOT NULL, + UpdatedAt DATETIME NOT NULL, + DeletedAt DATETIME, + FileName TEXT NOT NULL, + Site TEXT NOT NULL +); + +Create Table Settings ( + ID INTEGER PRIMARY KEY AUTOINCREMENT, + CreatedAt DATETIME NOT NULL, + UpdatedAt DATETIME NOT NULL, + DeletedAt DATETIME, + Key TEXT NOT NULL, -- How you search for a entry + Value TEXT NOT NULL, -- The value for one + Options TEXT -- any notes about the entry +); + +CREATE Table Sources ( + ID INTEGER PRIMARY KEY AUTOINCREMENT, + CreatedAt DATETIME NOT NULL, + UpdatedAt DATETIME NOT NULL, + DeletedAt DATETIME, + Site TEXT NOT NULL, -- Vanity name + Name TEXT NOT NULL, -- Defines the name of the source. IE: dadjokes + Source TEXT NOT NULL, -- Defines the service that will use this reocrd. IE reddit or youtube + Type TEXT NOT NULL, -- Defines what kind of feed this is. feed, user, tag + Value TEXT, + Enabled BOOLEAN NOT NULL, + Url TEXT NOT NULL, + Tags TEXT NOT NULL +); + +CREATE TABLE Subscriptions ( + ID INTEGER PRIMARY KEY AUTOINCREMENT, + CreatedAt DATETIME NOT NULL, + UpdatedAt DATETIME NOT NULL, + DeletedAt DATETIME, + DiscordWebHookId NUMBER NOT NULL, + SourceId NUMBER NOT NULL +); + +CREATE TABLE Users ( + ID INTEGER PRIMARY KEY AUTOINCREMENT, + CreatedAt DATETIME NOT NULL, + UpdatedAt DATETIME NOT NULL, + DeletedAt DATETIME, + Name TEXT NOT NULL, + Hash TEXT NOT NULL, + Scopes TEXT NOT NULL +); + +CREATE TABLE RefreshTokens ( + ID INTEGER PRIMARY KEY AUTOINCREMENT, + CreatedAt DATETIME NOT NULL, + UpdatedAt DATETIME NOT NULL, + DeletedAt DATETIME, + Username TEXT NOT NULL, + Token TEXT NOT NULL +); + + +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +Drop Table Articles; +Drop Table DiscordQueue; +Drop Table DiscordWebHooks; +Drop Table Icons; +Drop Table Settings; +Drop Table Sources; +DROP TABLE Subscriptions; +DROP TABLE Users; +DROP TABLE RefreshTokens; +-- +goose StatementEnd diff --git a/internal/database/migrations/20240425092459_seed.sql b/internal/database/migrations/20240425092459_seed.sql new file mode 100644 index 0000000..55c0471 --- /dev/null +++ b/internal/database/migrations/20240425092459_seed.sql @@ -0,0 +1,50 @@ +-- +goose Up +-- +goose StatementBegin +SELECT 'up SQL query'; + +-- Enable UUID's +--CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; + +-- Final Fantasy XIV Entries +INSERT INTO sources (CreatedAt, UpdatedAt, Site, Name, Source, Type, Value, Enabled, Url, Tags) VALUES +("2024-04-25 18:37:43.852367", "2024-04-25 18:37:43.852367", 'ffxiv', 'Final Fantasy XIV - NA', 'ffxiv', 'scrape', 'a', TRUE, 'https://na.finalfantasyxiv.com/lodestone/', 'ffxiv, final, fantasy, xiv, na, lodestone'); +INSERT INTO sources (CreatedAt, UpdatedAt, Site, Name, Source, Type, Value, Enabled, Url, Tags) VALUES +("2024-04-25 18:37:43.852367", "2024-04-25 18:37:43.852367", 'ffxiv', 'Final Fantasy XIV - JP', 'ffxiv', 'scrape', 'a', FALSE, 'https://jp.finalfantasyxiv.com/lodestone/', 'ffxiv, final, fantasy, xiv, jp, lodestone'); +INSERT INTO sources (CreatedAt, UpdatedAt, Site, Name, Source, Type, Value, Enabled, Url, Tags) VALUES +("2024-04-25 18:37:43.852367", "2024-04-25 18:37:43.852367", 'ffxiv', 'Final Fantasy XIV - EU', 'ffxiv', 'scrape', 'a', FALSE, 'https://eu.finalfantasyxiv.com/lodestone/', 'ffxiv, final, fantasy, xiv, eu, lodestone'); +INSERT INTO sources (CreatedAt, UpdatedAt, Site, Name, Source, Type, Value, Enabled, Url, Tags) VALUES +("2024-04-25 18:37:43.852367", "2024-04-25 18:37:43.852367", 'ffxiv', 'Final Fantasy XIV - FR', 'ffxiv', 'scrape', 'a', FALSE, 'https://fr.finalfantasyxiv.com/lodestone/', 'ffxiv, final, fantasy, xiv, fr, lodestone'); +INSERT INTO sources (CreatedAt, UpdatedAt, Site, Name, Source, Type, Value, Enabled, Url, Tags) VALUES +("2024-04-25 18:37:43.852367", "2024-04-25 18:37:43.852367", 'ffxiv', 'Final Fantasy XIV - DE', 'ffxiv', 'scrape', 'a', FALSE, 'https://de.finalfantasyxiv.com/lodestone/', 'ffxiv, final, fantasy, xiv, de, lodestone'); + +-- Reddit Entries +INSERT INTO sources (CreatedAt, UpdatedAt, Site, Name, Source, Type, Value, Enabled, Url, Tags) VALUES +("2024-04-25 18:37:43.852367", "2024-04-25 18:37:43.852367", 'reddit', 'dadjokes', 'reddit', 'feed', 'a', TRUE, 'https://reddit.com/r/dadjokes', 'reddit, dadjokes'); +INSERT INTO sources (CreatedAt, UpdatedAt, Site, Name, Source, Type, Value, Enabled, Url, Tags) VALUES +("2024-04-25 18:37:43.852367", "2024-04-25 18:37:43.852367", 'reddit', 'steamdeck', 'reddit', 'feed', 'a', TRUE, 'https://reddit.com/r/steamdeck', 'reddit, steam deck, steam, deck'); + +-- Youtube Entries +INSERT INTO sources (CreatedAt, UpdatedAt, Site, Name, Source, Type, Value, Enabled, Url, Tags) VALUES +("2024-04-25 18:37:43.852367", "2024-04-25 18:37:43.852367", 'youtube', 'Game Grumps', 'youtube', 'feed', 'a', TRUE, 'https://www.youtube.com/user/GameGrumps', 'youtube, game grumps, game, grumps'); + +-- RSS Entries +INSERT INTO sources (CreatedAt, UpdatedAt, Site, Name, Source, Type, Value, Enabled, Url, Tags) VALUES +("2024-04-25 18:37:43.852367", "2024-04-25 18:37:43.852367", 'steampowered', 'steam deck', 'rss', 'feed', 'a', TRUE, 'https://store.steampowered.com/feeds/news/app/1675200/?cc=US&l=english&snr=1_2108_9__2107', 'rss, steampowered, steam, deck, steam deck'); + +-- Twitch Entries +INSERT INTO sources (CreatedAt, UpdatedAt, Site, Name, Source, Type, Value, Enabled, Url, Tags) VALUES +("2024-04-25 18:37:43.852367", "2024-04-25 18:37:43.852367", 'twitch', 'Nintendo', 'twitch', 'api', 'a', TRUE, 'https://twitch.tv/nintendo', 'twitch, nintendo'); + +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin +--SELECT 'down SQL query'; + +DELETE FROM sources where source = 'reddit' and name = 'dadjokes'; +DELETE FROM sources where source = 'reddit' and name = 'steamdeck'; +DELETE FROM sources where source = 'ffxiv'; +DELETE FROM sources WHERE source = 'twitch' and name = 'Nintendo'; +DELETE FROM sources WHERE source = 'youtube' and name = 'Game Grumps'; +DELETE FROM SOURCES WHERE source = 'rss' and name = 'steam deck'; +-- +goose StatementEnd