mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-10 05:06:15 -05:00
Persisted Plus Tier migration
This is basically 100% perf optimization
This commit is contained in:
67
migrations/017-persisted-plus-tier.js
Normal file
67
migrations/017-persisted-plus-tier.js
Normal file
@@ -0,0 +1,67 @@
|
||||
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();
|
||||
};
|
||||
Reference in New Issue
Block a user