mirror of
https://git.nadeko.net/Fijxu/invidious.git
synced 2025-12-14 09:05:09 +00:00
Set all video info for cache in a struct
This commit is contained in:
@@ -4,6 +4,15 @@ require "redis"
|
|||||||
VideoCache = Invidious::Database::Videos::Cache.new
|
VideoCache = Invidious::Database::Videos::Cache.new
|
||||||
|
|
||||||
module Invidious::Database::Videos
|
module Invidious::Database::Videos
|
||||||
|
struct VideoCacheInfo
|
||||||
|
property info : String
|
||||||
|
property id : String
|
||||||
|
property updated : String
|
||||||
|
|
||||||
|
def initialize(@info, @id, @updated)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class Cache
|
class Cache
|
||||||
def initialize
|
def initialize
|
||||||
case CONFIG.video_cache.backend
|
case CONFIG.video_cache.backend
|
||||||
@@ -19,7 +28,7 @@ module Invidious::Database::Videos
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def set(video : Video, expire_time)
|
def set(video : VideoCacheInfo, expire_time)
|
||||||
@cache.set(video, expire_time)
|
@cache.set(video, expire_time)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -45,8 +54,8 @@ module Invidious::Database::Videos
|
|||||||
end
|
end
|
||||||
|
|
||||||
# TODO: Handle expire_time with a Job
|
# TODO: Handle expire_time with a Job
|
||||||
def set(video : Video, expire_time)
|
def set(video : VideoCacheInfo, expire_time)
|
||||||
self[video.id] = video.info.to_json
|
self[video.id] = video.info
|
||||||
self[video.id + ":time"] = "#{video.updated}"
|
self[video.id + ":time"] = "#{video.updated}"
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -113,8 +122,8 @@ module Invidious::Database::Videos
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def set(video : Video, expire_time)
|
def set(video : VideoCacheInfo, expire_time)
|
||||||
@redis.set(video.id, video.info.to_json, ex: expire_time)
|
@redis.set(video.id, video.info, ex: expire_time)
|
||||||
@redis.set(video.id + ":time", video.updated.to_s, ex: expire_time)
|
@redis.set(video.id + ":time", video.updated.to_s, ex: expire_time)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -143,14 +152,14 @@ module Invidious::Database::Videos
|
|||||||
LOGGER.info "Video Cache: Using PostgreSQL to store video cache"
|
LOGGER.info "Video Cache: Using PostgreSQL to store video cache"
|
||||||
end
|
end
|
||||||
|
|
||||||
def set(video : Video, expire_time)
|
def set(video : VideoCacheInfo, expire_time)
|
||||||
request = <<-SQL
|
request = <<-SQL
|
||||||
INSERT INTO videos
|
INSERT INTO videos
|
||||||
VALUES ($1, $2, $3)
|
VALUES ($1, $2, $3)
|
||||||
ON CONFLICT (id) DO NOTHING
|
ON CONFLICT (id) DO NOTHING
|
||||||
SQL
|
SQL
|
||||||
|
|
||||||
PG_DB.exec(request, video.id, video.info.to_json, video.updated)
|
PG_DB.exec(request, video.id, video.info, video.updated)
|
||||||
end
|
end
|
||||||
|
|
||||||
def del(id)
|
def del(id)
|
||||||
@@ -176,13 +185,18 @@ module Invidious::Database::Videos
|
|||||||
extend self
|
extend self
|
||||||
|
|
||||||
def insert(video : Video)
|
def insert(video : Video)
|
||||||
VideoCache.set(video: video, expire_time: 14400) if CONFIG.video_cache.enabled
|
video_cache_info = VideoCacheInfo.new(video.info.to_json, video.id, video.updated.to_s)
|
||||||
|
VideoCache.set(video: video_cache_info, expire_time: 14400) if CONFIG.video_cache.enabled
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete(id)
|
def delete(id)
|
||||||
VideoCache.del(id)
|
VideoCache.del(id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def select(id : String) : Video?
|
||||||
|
return VideoCache.get(id)
|
||||||
|
end
|
||||||
|
|
||||||
def delete_expired
|
def delete_expired
|
||||||
request = <<-SQL
|
request = <<-SQL
|
||||||
DELETE FROM videos *
|
DELETE FROM videos *
|
||||||
@@ -201,8 +215,4 @@ module Invidious::Database::Videos
|
|||||||
|
|
||||||
PG_DB.exec(request, video.id, video.info.to_json, video.updated)
|
PG_DB.exec(request, video.id, video.info.to_json, video.updated)
|
||||||
end
|
end
|
||||||
|
|
||||||
def select(id : String) : Video?
|
|
||||||
return VideoCache.get(id)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user