--- export const prerender = false; export const partial = true; import ClaimAllButton from '../../page/claim_all_button.astro'; import { Page } from '../../../lib/Page'; import { squish } from '../../../lib/tags'; const pageId = Astro.url.searchParams.get('page'); const questClaims = Page.db.query(squish` update quests set claimed = true where id in ( select qs.id from quests qs join questlines ql on ql.id = qs.questline_id join pages ps on ps.id = ql.page_id where qs.completed = true and qs.claimed = false and ps.id = ? ) returning id, coins_reward; `).values(pageId); const claimQuestCoins = Page.db.query(squish` insert into events(kind, quest_id, coins_claimed) values ('claim_quest', ?, ?) `); Page.db.transaction(claims => { for(const [id, coins] of claims) claimQuestCoins.run(id, coins) })(questClaims); const questlineClaims = Page.db.query(squish` update questlines set claimed = true where id in ( select ql.id from questlines ql join pages ps on ps.id = ql.page_id where ps.id = ? and ql.claimed = false and (select min(completed) from quests qs where qs.questline_id = ql.id) = 1 ) returning id, coins_reward `).values(pageId); const claimQuestlineCoins = Page.db.query(squish` insert into events(kind, questline_id, coins_claimed) values ('claim_questline', ?, ?) `); Page.db.transaction(claims => { for(const [id, coins] of claims) claimQuestlineCoins.run(id, coins) })(questlineClaims); Astro.response.headers.set('HX-Trigger', 'claimedAll, questClaimed, bankUpdate'); ---