mirror of
https://github.com/BreizhHardware/Jellystat.git
synced 2026-01-18 16:27:20 +01:00
59 lines
1.8 KiB
JavaScript
59 lines
1.8 KiB
JavaScript
exports.up = function(knex) {
|
|
return knex.raw(`
|
|
CREATE OR REPLACE FUNCTION fs_last_user_activity(
|
|
userid text
|
|
)
|
|
RETURNS TABLE(
|
|
"Id" text,
|
|
"Name" text,
|
|
"EpisodeName" text,
|
|
"SeasonNumber" integer,
|
|
"EpisodeNumber" integer,
|
|
"PrimaryImageHash" text,
|
|
"UserId" text,
|
|
"UserName" text,
|
|
"LastPlayed" interval
|
|
)
|
|
LANGUAGE 'plpgsql'
|
|
COST 100
|
|
VOLATILE PARALLEL UNSAFE
|
|
ROWS 1000
|
|
AS $BODY$
|
|
BEGIN
|
|
RETURN QUERY
|
|
SELECT *
|
|
FROM (
|
|
SELECT DISTINCT ON (i."Name", e."Name")
|
|
i."Id",
|
|
i."Name",
|
|
e."Name" AS "EpisodeName",
|
|
CASE WHEN a."SeasonId" IS NOT NULL THEN s."IndexNumber" ELSE NULL END AS "SeasonNumber",
|
|
CASE WHEN a."SeasonId" IS NOT NULL THEN e."IndexNumber" ELSE NULL END AS "EpisodeNumber",
|
|
i."PrimaryImageHash",
|
|
a."UserId",
|
|
a."UserName",
|
|
(NOW() - a."ActivityDateInserted") as "LastPlayed"
|
|
FROM jf_playback_activity a
|
|
JOIN jf_library_items i ON i."Id" = a."NowPlayingItemId"
|
|
LEFT JOIN jf_library_seasons s ON s."Id" = a."SeasonId"
|
|
LEFT JOIN jf_library_episodes e ON e."EpisodeId" = a."EpisodeId"
|
|
WHERE a."UserId" = userid
|
|
) AS latest_distinct_rows
|
|
ORDER BY "LastPlayed";
|
|
END;
|
|
$BODY$;
|
|
|
|
ALTER FUNCTION fs_last_user_activity(text)
|
|
OWNER TO "${process.env.POSTGRES_ROLE}";
|
|
`).catch(function(error) {
|
|
console.error(error);
|
|
});
|
|
};
|
|
|
|
exports.down = function(knex) {
|
|
return knex.raw(`
|
|
DROP FUNCTION IF EXISTS fs_last_user_activity(text);
|
|
`);
|
|
};
|
|
|