sendou.ink/migrations/017-persisted-plus-tier.js
2023-08-26 22:38:11 +03:00

68 lines
1.4 KiB
JavaScript

module.exports.up = function (db) {
db.prepare(`drop view "PlusTier"`).run();
db.prepare(
/* sql */ `
create view "FreshPlusTier" 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();
db.prepare(
/* sql */ `
create table "PlusTier" (
"userId" integer primary key,
"tier" integer not null,
foreign key ("userId") references "User"("id") on delete set null
) strict
`,
).run();
db.prepare(
/* sql */ `
insert into "PlusTier" ("userId", "tier") select "userId", "tier" from "FreshPlusTier" where "tier" is not null;
`,
).run();
};