Another tiny PR :awesome:

This commit is contained in:
Drapersniper
2020-06-23 11:46:50 +01:00
parent 5417d871c6
commit 8f5118d257
59 changed files with 4089 additions and 18 deletions

View File

@@ -0,0 +1,5 @@
from __future__ import annotations
from . import lavalink, persist_queue, playlists, pragmas, spotify, youtube
__all__ = ["pragmas", "lavalink", "persist_queue", "playlists", "spotify", "youtube"]

View File

@@ -0,0 +1,150 @@
from __future__ import annotations
from typing import Final
__all__ = [
"DROP_TABLE",
"CREATE_TABLE",
"CREATE_INDEX",
"UPSERT",
"UPDATE",
"QUERY",
"QUERY_ALL",
"QUERY_LAST_FETCHED_RANDOM",
"DELETE_OLD_ENTRIES",
"FETCH_ALL_ENTRIES_GLOBAL",
]
DROP_TABLE: Final[
str
] = """
DROP
TABLE
IF EXISTS
lavalink
;
"""
CREATE_TABLE: Final[
str
] = """
CREATE
TABLE
IF NOT EXISTS
lavalink(
query TEXT,
data JSON,
last_updated INTEGER,
last_fetched INTEGER
)
;
"""
CREATE_INDEX: Final[
str
] = """
CREATE
UNIQUE INDEX
IF NOT EXISTS
idx_lavalink_query
ON
lavalink (
query
)
;
"""
UPSERT: Final[
str
] = """ -- noinspection SqlResolve @ any/"excluded"
INSERT
INTO
lavalink (
query,
data,
last_updated,
last_fetched
)
VALUES
(
:query,
:data,
:last_updated,
:last_fetched
)
ON
CONFLICT (
query
)
DO
UPDATE
SET
data = excluded.data,
last_updated = excluded.last_updated
;
"""
UPDATE: Final[
str
] = """
UPDATE
lavalink
SET
last_fetched=:last_fetched
WHERE
query=:query
;
"""
QUERY: Final[
str
] = """
SELECT
data, last_updated
FROM
lavalink
WHERE
query=:query
AND
last_updated > :maxage
LIMIT 1
;
"""
QUERY_ALL: Final[
str
] = """
SELECT
data, last_updated
FROM
lavalink
;
"""
QUERY_LAST_FETCHED_RANDOM: Final[
str
] = """
SELECT
data, last_updated
FROM
lavalink
WHERE
last_fetched > :day
AND
last_updated > :maxage
LIMIT 100
;
"""
DELETE_OLD_ENTRIES: Final[
str
] = """
DELETE
FROM
lavalink
WHERE
last_updated < :maxage
;
"""
FETCH_ALL_ENTRIES_GLOBAL: Final[
str
] = """
SELECT
query, data
FROM
lavalink
;
"""

View File

@@ -0,0 +1,128 @@
from __future__ import annotations
from typing import Final
__all__ = [
"DROP_TABLE",
"CREATE_TABLE",
"CREATE_INDEX",
"PLAYED",
"DELETE_SCHEDULED",
"FETCH_ALL",
"UPSERT",
"BULK_PLAYED",
]
DROP_TABLE: Final[
str
] = """
DROP
TABLE
IF EXISTS
persist_queue
;
"""
CREATE_TABLE: Final[
str
] = """
CREATE
TABLE
IF NOT EXISTS
persist_queue(
guild_id INTEGER NOT NULL,
room_id INTEGER NOT NULL,
track JSON NOT NULL,
played BOOLEAN DEFAULT FALSE,
track_id TEXT NOT NULL,
time INTEGER NOT NULL,
PRIMARY KEY
(
guild_id, room_id, track_id
)
)
;
"""
CREATE_INDEX: Final[
str
] = """
CREATE
INDEX
IF NOT EXISTS
track_index
ON
persist_queue (
guild_id, track_id
)
;
"""
PLAYED: Final[
str
] = """
UPDATE
persist_queue
SET
played = TRUE
WHERE
(
guild_id = :guild_id
AND
track_id = :track_id
)
;
"""
BULK_PLAYED: Final[
str
] = """
UPDATE
persist_queue
SET
played = TRUE
WHERE
guild_id = :guild_id
;
"""
DELETE_SCHEDULED: Final[
str
] = """
DELETE
FROM
persist_queue
WHERE
played = TRUE
;
"""
FETCH_ALL: Final[
str
] = """
SELECT
guild_id, room_id, track
FROM
persist_queue
WHERE
played = FALSE
ORDER BY
time
;
"""
UPSERT: Final[
str
] = """ -- noinspection SqlResolve
INSERT INTO
persist_queue (
guild_id, room_id, track, played, track_id, time
)
VALUES
(
:guild_id, :room_id, :track, :played, :track_id, :time
)
ON
CONFLICT (
guild_id, room_id, track_id
)
DO
UPDATE
SET
time = excluded.time
;
"""

View File

@@ -0,0 +1,211 @@
from __future__ import annotations
from typing import Final
__all__ = [
"CREATE_TABLE",
"DELETE",
"DELETE_SCOPE",
"DELETE_SCHEDULED",
"FETCH_ALL",
"FETCH_ALL_WITH_FILTER",
"FETCH_ALL_CONVERTER",
"FETCH",
"UPSERT",
"CREATE_INDEX",
]
CREATE_TABLE: Final[
str
] = """
CREATE
TABLE
IF NOT EXISTS
playlists (
scope_type INTEGER NOT NULL,
playlist_id INTEGER NOT NULL,
playlist_name TEXT NOT NULL,
scope_id INTEGER NOT NULL,
author_id INTEGER NOT NULL,
deleted BOOLEAN DEFAULT FALSE,
playlist_url TEXT,
tracks JSON,
PRIMARY KEY
(
playlist_id, scope_id, scope_type
)
)
;
"""
DELETE: Final[
str
] = """
UPDATE
playlists
SET
deleted = TRUE
WHERE
(
scope_type = :scope_type
AND
playlist_id = :playlist_id
AND
scope_id = :scope_id
)
;
"""
DELETE_SCOPE: Final[
str
] = """
DELETE
FROM
playlists
WHERE
scope_type = :scope_type
;
"""
DELETE_SCHEDULED: Final[
str
] = """
DELETE
FROM
playlists
WHERE
deleted = TRUE
;
"""
FETCH_ALL: Final[
str
] = """
SELECT
playlist_id,
playlist_name,
scope_id,
author_id,
playlist_url,
tracks
FROM
playlists
WHERE
scope_type = :scope_type
AND
scope_id = :scope_id
AND
deleted = FALSE
;
"""
FETCH_ALL_WITH_FILTER: Final[
str
] = """
SELECT
playlist_id,
playlist_name,
scope_id,
author_id,
playlist_url,
tracks
FROM
playlists
WHERE
(
scope_type = :scope_type
AND
scope_id = :scope_id
AND
author_id = :author_id
AND
deleted = FALSE
)
;
"""
FETCH_ALL_CONVERTER: Final[
str
] = """-- noinspection SqlResolveForFile
SELECT
playlist_id,
playlist_name,
scope_id,
author_id,
playlist_url,
tracks
FROM
playlists
WHERE
(
scope_type = :scope_type
AND
(
playlist_id = :playlist_id
OR
LOWER(playlist_name) LIKE "%" || COALESCE(LOWER(:playlist_name), "") || "%"
)
AND
deleted = FALSE
)
;
"""
FETCH: Final[
str
] = """
SELECT
playlist_id,
playlist_name,
scope_id,
author_id,
playlist_url,
tracks
FROM
playlists
WHERE
(
scope_type = :scope_type
AND
playlist_id = :playlist_id
AND
scope_id = :scope_id
AND
deleted = FALSE
)
LIMIT 1
;
"""
UPSERT: Final[
str
] = """ -- noinspection SqlResolve @ any/"excluded"
INSERT
INTO
playlists (
scope_type, playlist_id, playlist_name,
scope_id, author_id, playlist_url, tracks
)
VALUES
(
:scope_type, :playlist_id, :playlist_name, :scope_id, :author_id, :playlist_url, :tracks
)
ON
CONFLICT
(
scope_type, playlist_id, scope_id
)
DO
UPDATE
SET
playlist_name = excluded.playlist_name,
playlist_url = excluded.playlist_url,
tracks = excluded.tracks
;
"""
CREATE_INDEX: Final[
str
] = """
CREATE
INDEX
IF NOT EXISTS name_index
ON
playlists (
scope_type, playlist_id, playlist_name, scope_id
)
;
"""

View File

@@ -0,0 +1,48 @@
from __future__ import annotations
from typing import Final
__all__ = [
"SET_temp_store",
"SET_journal_mode",
"SET_read_uncommitted",
"FETCH_user_version",
"SET_user_version",
]
SET_temp_store: Final[
str
] = """
PRAGMA
temp_store = 2
;
"""
SET_journal_mode: Final[
str
] = """
PRAGMA
journal_mode = wal
;
"""
SET_read_uncommitted: Final[
str
] = """
PRAGMA
read_uncommitted = 1
;
"""
FETCH_user_version: Final[
str
] = """
PRAGMA
user_version
;
"""
SET_user_version: Final[
str
] = """
PRAGMA
user_version = 3
;
"""

View File

@@ -0,0 +1,146 @@
from __future__ import annotations
from typing import Final
__all__ = [
"DROP_TABLE",
"CREATE_INDEX",
"CREATE_TABLE",
"UPSERT",
"QUERY",
"QUERY_ALL",
"UPDATE",
"DELETE_OLD_ENTRIES",
"QUERY_LAST_FETCHED_RANDOM",
]
DROP_TABLE: Final[
str
] = """
DROP
TABLE
IF EXISTS
spotify
;
"""
CREATE_TABLE: Final[
str
] = """
CREATE
TABLE
IF NOT EXISTS
spotify(
id TEXT,
type TEXT,
uri TEXT,
track_name TEXT,
artist_name TEXT,
song_url TEXT,
track_info TEXT,
last_updated INTEGER,
last_fetched INTEGER
)
;
"""
CREATE_INDEX: Final[
str
] = """
CREATE
UNIQUE INDEX
IF NOT EXISTS
idx_spotify_uri
ON
spotify (
id, type, uri
)
;
"""
UPSERT: Final[
str
] = """ -- noinspection SqlResolve @ any/"excluded"
INSERT
INTO
spotify(
id, type, uri, track_name, artist_name,
song_url, track_info, last_updated, last_fetched
)
VALUES
(
:id, :type, :uri, :track_name, :artist_name,
:song_url, :track_info, :last_updated, :last_fetched
)
ON
CONFLICT
(
id,
type,
uri
)
DO
UPDATE
SET
track_name = excluded.track_name,
artist_name = excluded.artist_name,
song_url = excluded.song_url,
track_info = excluded.track_info,
last_updated = excluded.last_updated;
"""
UPDATE: Final[
str
] = """
UPDATE
spotify
SET
last_fetched=:last_fetched
WHERE
uri=:uri
;
"""
QUERY: Final[
str
] = """
SELECT
track_info, last_updated
FROM
spotify
WHERE
uri=:uri
AND
last_updated > :maxage
LIMIT 1
;
"""
QUERY_ALL: Final[
str
] = """
SELECT
track_info, last_updated
FROM
spotify
;
"""
DELETE_OLD_ENTRIES: Final[
str
] = """
DELETE
FROM
spotify
WHERE
last_updated < :maxage
;
"""
QUERY_LAST_FETCHED_RANDOM: Final[
str
] = """
SELECT
track_info, last_updated
FROM
spotify
WHERE
last_fetched > :day
AND
last_updated > :maxage
LIMIT 100
;
"""

View File

@@ -0,0 +1,143 @@
from __future__ import annotations
from typing import Final
__all__ = [
"DROP_TABLE",
"CREATE_TABLE",
"CREATE_INDEX",
"UPSERT",
"UPDATE",
"QUERY",
"QUERY_ALL",
"DELETE_OLD_ENTRIES",
"QUERY_LAST_FETCHED_RANDOM",
]
DROP_TABLE: Final[
str
] = """
DROP
TABLE
IF EXISTS
youtube
;
"""
CREATE_TABLE: Final[
str
] = """
CREATE
TABLE
IF NOT EXISTS
youtube(
id INTEGER PRIMARY KEY AUTOINCREMENT,
track_info TEXT,
youtube_url TEXT,
last_updated INTEGER,
last_fetched INTEGER
)
;
"""
CREATE_INDEX: Final[
str
] = """
CREATE
UNIQUE INDEX
IF NOT EXISTS
idx_youtube_url
ON
youtube (
track_info, youtube_url
)
;
"""
UPSERT: Final[
str
] = """-- noinspection SqlResolveForFile
INSERT INTO
youtube
(
track_info,
youtube_url,
last_updated,
last_fetched
)
VALUES
(
:track_info,
:track_url,
:last_updated,
:last_fetched
)
ON CONFLICT
(
track_info,
youtube_url
)
DO
UPDATE
SET
track_info = excluded.track_info,
last_updated = excluded.last_updated
;
"""
UPDATE: Final[
str
] = """
UPDATE
youtube
SET
last_fetched=:last_fetched
WHERE
track_info=:track
;
"""
QUERY: Final[
str
] = """
SELECT
youtube_url, last_updated
FROM
youtube
WHERE
track_info=:track
AND
last_updated > :maxage
LIMIT 1
;
"""
QUERY_ALL: Final[
str
] = """
SELECT
youtube_url, last_updated
FROM
youtube
;
"""
DELETE_OLD_ENTRIES: Final[
str
] = """
DELETE
FROM
youtube
WHERE
last_updated < :maxage
;
"""
QUERY_LAST_FETCHED_RANDOM: Final[
str
] = """
SELECT
youtube_url, last_updated
FROM
youtube
WHERE
last_fetched > :day
AND
last_updated > :maxage
LIMIT 100
;
"""