sendou.ink/migrations/002-fix-plus-tier.js

104 lines
1.9 KiB
JavaScript

// add missing min() call to handle multiple results w/ suggests correctly
module.exports.up = function (db) {
db.prepare(`drop view "PlusTier"`).run();
db.prepare(
`
create view "PlusTier" as
select
"votedId" as "userId",
min(
case
when "passedVoting" = 0
and "wasSuggested" = 1 then null
when "passedVoting" = 1 then "tier"
when "passedVoting" = 0
and "tier" != 3 then "tier" + 1
end
) as "tier"
from
"PlusVotingResult"
where
year = (
select
"year"
from
"PlusVote"
where
"validAfter" < strftime('%s', 'now')
order by
"year" desc,
"month" desc
limit
1
)
and "month" = (
select
"month"
from
"PlusVote"
where
"validAfter" < strftime('%s', 'now')
order by
"year" desc,
"month" desc
limit
1
)
group by
"votedId";
`
).run();
};
module.exports.down = function (db) {
db.prepare(`drop view "PlusTier"`).run();
db.prepare(
`
create view "PlusTier" as
select
"votedId" as "userId",
case
when "passedVoting" = 0
and "wasSuggested" = 1 then null
when "passedVoting" = 1 then "tier"
when "passedVoting" = 0
and "tier" != 3 then "tier" + 1
end "tier"
from
"PlusVotingResult"
where
year = (
select
"year"
from
"PlusVote"
where
"validAfter" < strftime('%s', 'now')
order by
"year" desc,
"month" desc
limit
1
)
and "month" = (
select
"month"
from
"PlusVote"
where
"validAfter" < strftime('%s', 'now')
order by
"year" desc,
"month" desc
limit
1
)
group by
"votedId";
`
).run();
};