Ecto schema for the quest_progress table — one row per user, quest and
reset period.
Fields
period_key— reset bucket: a UTC date ("2026-07-22") for a daily, an ISO week ("2026-W30") for a weekly,"static"otherwise. Rolling the period is what "resets" a quest — a new period means a fresh row.objective_progress— map of objective index (as a string) to countstatus—"active"→"completed"(all targets met) →"claimed"rewards_granted_at— set once every reward entry has been applied;claimedrows without it are retried by the reward-recovery sweep
Summary
Functions
The valid progress statuses.
Types
@type t() :: %Gamend.Quests.QuestProgress{ __meta__: term(), claim_count: term(), claimed_at: term(), completed_at: term(), id: term(), inserted_at: term(), lock_version: term(), metadata: term(), objective_progress: term(), period_key: term(), quest: term(), quest_key: term(), rewards_granted_at: term(), status: term(), updated_at: term(), user: term(), user_id: term() }