feature: Achievements base.
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user