mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-04-24 23:19:39 -05:00
Show supporter badges logic
This commit is contained in:
parent
fb1d423bf0
commit
08df13eba0
|
|
@ -44,14 +44,14 @@ export const upsertManyManagers = sql.transaction(
|
|||
|
||||
const deleteManyOwnersStm = sql.prepare(`
|
||||
DELETE FROM
|
||||
"BadgeOwner"
|
||||
"TournamentBadgeOwner"
|
||||
WHERE
|
||||
"badgeId" = $badgeId
|
||||
`);
|
||||
|
||||
const createOwnerStm = sql.prepare(`
|
||||
INSERT INTO
|
||||
"BadgeOwner" (
|
||||
"TournamentBadgeOwner" (
|
||||
"badgeId",
|
||||
"userId"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@ export interface User {
|
|||
youtubeId: string | null;
|
||||
bio: string | null;
|
||||
country: string | null;
|
||||
patronTier: number | null;
|
||||
patronSince: number | null;
|
||||
}
|
||||
|
||||
/** User table after joined with PlusTier table */
|
||||
|
|
@ -59,11 +61,17 @@ export interface Badge {
|
|||
hue?: number;
|
||||
}
|
||||
|
||||
/** View that is union of TournamentBadgeOwner and Patreon badges */
|
||||
export interface BadgeOwner {
|
||||
badgeId: number;
|
||||
userId: number;
|
||||
}
|
||||
|
||||
export interface TournamentBadgeOwner {
|
||||
badgeId: number;
|
||||
userId: number;
|
||||
}
|
||||
|
||||
export interface BadgeManager {
|
||||
badgeId: number;
|
||||
userId: number;
|
||||
|
|
|
|||
|
|
@ -92,6 +92,11 @@ export default function BadgeDetailsPage() {
|
|||
export function badgeExplanationText(
|
||||
badge: Pick<BadgeDBType, "displayName" | "code"> & { count?: number }
|
||||
) {
|
||||
if (badge.code === "patreon") return "Supporter of sendou.ink on Patreon";
|
||||
if (badge.code === "patreon_plus") {
|
||||
return "Supporter+ of sendou.ink on Patreon";
|
||||
}
|
||||
|
||||
const countString =
|
||||
badge.count && badge.count > 1 ? ` (x${badge.count})` : "";
|
||||
return `Awarded for winning ${badge.displayName}${countString}`;
|
||||
|
|
|
|||
48
migrations/005-patrons.js
Normal file
48
migrations/005-patrons.js
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
module.exports.up = function (db) {
|
||||
db.prepare(`alter table "User" add column "patronTier" integer`).run();
|
||||
db.prepare(`alter table "User" add column "patronSince" integer`).run();
|
||||
|
||||
db.prepare(
|
||||
`insert into "Badge" ("code", "displayName") values ('patreon', 'Supporter')`
|
||||
).run();
|
||||
db.prepare(
|
||||
`insert into "Badge" ("code", "displayName") values ('patreon_plus', 'Supporter+')`
|
||||
).run();
|
||||
|
||||
db.prepare(`alter table "BadgeOwner" rename to "TournamentBadgeOwner"`).run();
|
||||
|
||||
const patreonBadgeId = db
|
||||
.prepare(`select "id" from "Badge" where "code" = 'patreon'`)
|
||||
.get().id;
|
||||
const patreonPlusBadgeId = db
|
||||
.prepare(`select "id" from "Badge" where "code" = 'patreon_plus'`)
|
||||
.get().id;
|
||||
|
||||
db.prepare(
|
||||
`
|
||||
create view "BadgeOwner" as
|
||||
select "userId", "badgeId" from "TournamentBadgeOwner"
|
||||
union all
|
||||
select
|
||||
"id" as "userId",
|
||||
case
|
||||
when "patronTier" = 2 then ${patreonBadgeId}
|
||||
else ${patreonPlusBadgeId}
|
||||
end "badgeId"
|
||||
from "User"
|
||||
where "patronTier" > 1
|
||||
`
|
||||
).run();
|
||||
};
|
||||
|
||||
module.exports.down = function (db) {
|
||||
db.prepare(`drop view "BadgeOwner"`).run();
|
||||
db.prepare(`alter table "User" drop column "patronTier"`).run();
|
||||
db.prepare(`alter table "User" drop column "patronSince"`).run();
|
||||
|
||||
db.prepare(
|
||||
`delete from "Badge" where "code" in ('patreon_plus', 'patreon')`
|
||||
).run();
|
||||
|
||||
db.prepare(`alter table "TournamentBadgeOwner" rename to "BadgeOwner"`).run();
|
||||
};
|
||||
|
Before Width: | Height: | Size: 194 KiB After Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Loading…
Reference in New Issue
Block a user