mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2026-01-30 20:13:00 -05:00
Another tiny PR :awesome:
This commit is contained in:
5
redbot/core/apis/audio/sql/__init__.py
Normal file
5
redbot/core/apis/audio/sql/__init__.py
Normal 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"]
|
||||
150
redbot/core/apis/audio/sql/lavalink.py
Normal file
150
redbot/core/apis/audio/sql/lavalink.py
Normal 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
|
||||
;
|
||||
"""
|
||||
128
redbot/core/apis/audio/sql/persist_queue.py
Normal file
128
redbot/core/apis/audio/sql/persist_queue.py
Normal 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
|
||||
;
|
||||
"""
|
||||
211
redbot/core/apis/audio/sql/playlists.py
Normal file
211
redbot/core/apis/audio/sql/playlists.py
Normal 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
|
||||
)
|
||||
;
|
||||
"""
|
||||
48
redbot/core/apis/audio/sql/pragmas.py
Normal file
48
redbot/core/apis/audio/sql/pragmas.py
Normal 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
|
||||
;
|
||||
"""
|
||||
146
redbot/core/apis/audio/sql/spotify.py
Normal file
146
redbot/core/apis/audio/sql/spotify.py
Normal 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
|
||||
;
|
||||
"""
|
||||
143
redbot/core/apis/audio/sql/youtube.py
Normal file
143
redbot/core/apis/audio/sql/youtube.py
Normal 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
|
||||
;
|
||||
"""
|
||||
Reference in New Issue
Block a user