feature: Achievements base.

This commit is contained in:
2022-01-27 00:35:37 +02:00
parent 22a73ba0c6
commit 3261781775
5 changed files with 453 additions and 2 deletions

View File

@@ -58,6 +58,46 @@ AS $$
$$ LANGUAGE PLPGSQL;
-- Add support for NULL guildid
DROP FUNCTION study_time_since(_guildid BIGINT, _userid BIGINT, _timestamp TIMESTAMPTZ);
CREATE FUNCTION study_time_since(_guildid BIGINT, _userid BIGINT, _timestamp TIMESTAMPTZ)
RETURNS INTEGER
AS $$
BEGIN
RETURN (
SELECT
SUM(
CASE
WHEN start_time >= _timestamp THEN duration
ELSE EXTRACT(EPOCH FROM (end_time - _timestamp))
END
)
FROM (
SELECT
start_time,
duration,
(start_time + duration * interval '1 second') AS end_time
FROM session_history
WHERE
(_guildid IS NULL OR guildid=_guildid)
AND userid=_userid
AND (start_time + duration * interval '1 second') >= _timestamp
UNION
SELECT
start_time,
EXTRACT(EPOCH FROM (NOW() - start_time)) AS duration,
NOW() AS end_time
FROM current_sessions
WHERE
(_guildid IS NULL OR guildid=_guildid)
AND userid=_userid
) AS sessions
);
END;
$$ LANGUAGE PLPGSQL;
-- Rebuild study data views
DROP VIEW current_sessions_totals CASCADE;

View File

@@ -485,7 +485,7 @@ AS $$
(start_time + duration * interval '1 second') AS end_time
FROM session_history
WHERE
guildid=_guildid
(_guildid IS NULL OR guildid=_guildid)
AND userid=_userid
AND (start_time + duration * interval '1 second') >= _timestamp
UNION
@@ -495,7 +495,7 @@ AS $$
NOW() AS end_time
FROM current_sessions
WHERE
guildid=_guildid
(_guildid IS NULL OR guildid=_guildid)
AND userid=_userid
) AS sessions
);