feat: add jikan cache stats query
This commit is contained in:
@@ -31,6 +31,7 @@ type Querier interface {
|
|||||||
GetEpisodeAvailabilityCache(ctx context.Context, animeID int64) (EpisodeAvailabilityCache, error)
|
GetEpisodeAvailabilityCache(ctx context.Context, animeID int64) (EpisodeAvailabilityCache, error)
|
||||||
GetEpisodeProviderMapping(ctx context.Context, arg GetEpisodeProviderMappingParams) (EpisodeProviderMapping, error)
|
GetEpisodeProviderMapping(ctx context.Context, arg GetEpisodeProviderMappingParams) (EpisodeProviderMapping, error)
|
||||||
GetJikanCache(ctx context.Context, key string) (string, error)
|
GetJikanCache(ctx context.Context, key string) (string, error)
|
||||||
|
GetJikanCacheStats(ctx context.Context) (GetJikanCacheStatsRow, error)
|
||||||
GetJikanCacheStale(ctx context.Context, key string) (string, error)
|
GetJikanCacheStale(ctx context.Context, key string) (string, error)
|
||||||
GetSession(ctx context.Context, id string) (Session, error)
|
GetSession(ctx context.Context, id string) (Session, error)
|
||||||
GetTrackedAiringAnimeIDsDueForEpisodeRefresh(ctx context.Context, limit int64) ([]int64, error)
|
GetTrackedAiringAnimeIDsDueForEpisodeRefresh(ctx context.Context, limit int64) ([]int64, error)
|
||||||
|
|||||||
@@ -235,6 +235,13 @@ WHERE key = ? AND datetime(expires_at) > CURRENT_TIMESTAMP LIMIT 1;
|
|||||||
SELECT data FROM jikan_cache
|
SELECT data FROM jikan_cache
|
||||||
WHERE key = ? AND datetime(expires_at) > datetime(CURRENT_TIMESTAMP, '-14 days') LIMIT 1;
|
WHERE key = ? AND datetime(expires_at) > datetime(CURRENT_TIMESTAMP, '-14 days') LIMIT 1;
|
||||||
|
|
||||||
|
-- name: GetJikanCacheStats :one
|
||||||
|
SELECT
|
||||||
|
COUNT(*) AS total_rows,
|
||||||
|
COUNT(*) FILTER (WHERE datetime(expires_at) <= CURRENT_TIMESTAMP) AS expired_rows,
|
||||||
|
COALESCE(unixepoch(MIN(expires_at)), 0) AS oldest_expires_at_seconds
|
||||||
|
FROM jikan_cache;
|
||||||
|
|
||||||
-- name: SetJikanCache :exec
|
-- name: SetJikanCache :exec
|
||||||
INSERT INTO jikan_cache (key, data, expires_at)
|
INSERT INTO jikan_cache (key, data, expires_at)
|
||||||
VALUES (?, ?, ?)
|
VALUES (?, ?, ?)
|
||||||
|
|||||||
@@ -576,6 +576,27 @@ func (q *Queries) GetJikanCache(ctx context.Context, key string) (string, error)
|
|||||||
return data, err
|
return data, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getJikanCacheStats = `-- name: GetJikanCacheStats :one
|
||||||
|
SELECT
|
||||||
|
COUNT(*) AS total_rows,
|
||||||
|
COUNT(*) FILTER (WHERE datetime(expires_at) <= CURRENT_TIMESTAMP) AS expired_rows,
|
||||||
|
COALESCE(unixepoch(MIN(expires_at)), 0) AS oldest_expires_at_seconds
|
||||||
|
FROM jikan_cache
|
||||||
|
`
|
||||||
|
|
||||||
|
type GetJikanCacheStatsRow struct {
|
||||||
|
TotalRows int64 `json:"total_rows"`
|
||||||
|
ExpiredRows int64 `json:"expired_rows"`
|
||||||
|
OldestExpiresAtSeconds int64 `json:"oldest_expires_at_seconds"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) GetJikanCacheStats(ctx context.Context) (GetJikanCacheStatsRow, error) {
|
||||||
|
row := q.db.QueryRowContext(ctx, getJikanCacheStats)
|
||||||
|
var i GetJikanCacheStatsRow
|
||||||
|
err := row.Scan(&i.TotalRows, &i.ExpiredRows, &i.OldestExpiresAtSeconds)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
const getJikanCacheStale = `-- name: GetJikanCacheStale :one
|
const getJikanCacheStale = `-- name: GetJikanCacheStale :one
|
||||||
SELECT data FROM jikan_cache
|
SELECT data FROM jikan_cache
|
||||||
WHERE key = ? AND datetime(expires_at) > datetime(CURRENT_TIMESTAMP, '-14 days') LIMIT 1
|
WHERE key = ? AND datetime(expires_at) > datetime(CURRENT_TIMESTAMP, '-14 days') LIMIT 1
|
||||||
|
|||||||
Reference in New Issue
Block a user