Files
browser/plugins/examples/scum-server-plugin/sql/scum-db-v57/tasks.sql
T

33 lines
1.7 KiB
SQL

SELECT
'active-quest:' || CAST(quest.id AS TEXT) AS taskRecordId,
'active-quest' AS taskKind,
CAST(quest.user_profile_id AS TEXT) AS userProfileId,
CAST(quest.map_id AS TEXT) AS mapId,
CAST(quest.id AS TEXT) AS trackingDataSetId,
quest.quest_data_asset_path AS dataAssetPath,
tracking.sequence_index AS sequenceIndex,
CASE WHEN EXISTS (SELECT 1 FROM tracked_quest tracked WHERE tracked.quest_id = quest.id) THEN 1 ELSE 0 END AS isTracked,
'active' AS state,
quest.completion_deadline AS completionDeadline
FROM active_quest quest
JOIN tracking_data_set tracking ON tracking.id = quest.id
WHERE (:userProfileId IS NULL OR CAST(quest.user_profile_id AS TEXT) = :userProfileId)
UNION ALL
SELECT
'active-task:' || CAST(task.id AS TEXT), 'active-task', CAST(task.user_profile_id AS TEXT), CAST(task.map_id AS TEXT),
CAST(task.id AS TEXT), available.task_data_asset_path, tracking.sequence_index,
CASE WHEN EXISTS (SELECT 1 FROM tracked_quest tracked WHERE tracked.quest_id = task.id) THEN 1 ELSE 0 END,
'active', NULL
FROM active_task task
JOIN tracking_data_set tracking ON tracking.id = task.id
JOIN available_task available ON available.id = task.available_task_id
WHERE (:userProfileId IS NULL OR CAST(task.user_profile_id AS TEXT) = :userProfileId)
UNION ALL
SELECT
'available-task:' || CAST(available.id AS TEXT), 'available-task', CAST(available.user_profile_id AS TEXT), CAST(available.map_id AS TEXT),
NULL, available.task_data_asset_path, NULL, 0,
CASE WHEN available.was_ever_completed = 1 THEN 'completed-before' ELSE 'available' END, NULL
FROM available_task available
WHERE (:userProfileId IS NULL OR CAST(available.user_profile_id AS TEXT) = :userProfileId)
LIMIT COALESCE(:limit, 500)