forked from midou/invidious
50 lines
938 B
Crystal
50 lines
938 B
Crystal
require "./base.cr"
|
|
|
|
module Invidious::Database::Statistics
|
|
extend self
|
|
|
|
# -------------------
|
|
# User stats
|
|
# -------------------
|
|
|
|
def count_users_total : Int64
|
|
request = <<-SQL
|
|
SELECT count(*) FROM users
|
|
SQL
|
|
|
|
PG_DB.query_one(request, as: Int64)
|
|
end
|
|
|
|
def count_users_active_1m : Int64
|
|
request = <<-SQL
|
|
SELECT count(*) FROM users
|
|
WHERE CURRENT_TIMESTAMP - updated < '6 months'
|
|
SQL
|
|
|
|
PG_DB.query_one(request, as: Int64)
|
|
end
|
|
|
|
def count_users_active_6m : Int64
|
|
request = <<-SQL
|
|
SELECT count(*) FROM users
|
|
WHERE CURRENT_TIMESTAMP - updated < '1 month'
|
|
SQL
|
|
|
|
PG_DB.query_one(request, as: Int64)
|
|
end
|
|
|
|
# -------------------
|
|
# Channel stats
|
|
# -------------------
|
|
|
|
def channel_last_update : Time?
|
|
request = <<-SQL
|
|
SELECT updated FROM channels
|
|
ORDER BY updated DESC
|
|
LIMIT 1
|
|
SQL
|
|
|
|
PG_DB.query_one?(request, as: Time)
|
|
end
|
|
end
|