33 lines
1.7 KiB
SQL
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)
|