sendou.ink/app/db/types.ts
Kalle c2e43fb535
X Rank placements (#1325)
* Read in x rank placements script

* Xsearch initial

* XSearch initial

* XSearch with select

* Add badges

* XSearch player page initial

* Consider only one build by user for popular builds Closes #1312

* Revert "Side nav labels on hover (#1290)"

This reverts commit 6e839c6c2d.

* Added and fixed DAnish translations (#1315)

* Added Danish translations

Added Danish translations for the builds.json file.

Translations for the following variables have been added
stats.count.title # used the Danish word for "average" instead of "stats", as it makes more sense in Danish.
stats.ap.title
stats.percentage.title
stats.all
linkButton.abilityStats
linkButton.popularBuilds
noPopularBuilds

* Added Danish translations

Added Danish translations in the calander.json file

tag.desc.SZ
tag.desc.TW
tag.desc.S1
tag.desc.S2
tag.desc.SR
tag.desc.CARDS

* Added Danish translations

Added Danish translations in the common.json file

The following translations have been added
pages.vods
tag.name.SZ
tag.name.TW
tag.name.S1
tag.name.S2
tag.name.SR
tag.name.CARDS

* Added Danish translations in the faq.json file

Added the following Danish translations in the faq.json file

q7
a7

* Updated the DA/game-misc.json file

Added the names for the 3.0 maps.

* Added Danish translation for team.json

Added the following Danish translations for team.json file
- roles.MIDLINE

Fixed the following translation for the team.json file
- "roles.FRONTLINE": # fixed a typo

* Created a vods.json file for the Danish trans

* Fixed typo

Fixed the following translation in the Da\contributions.json file

"yaga" # fixed a Typo of "våben"

* Add Chinese Translation (#1314)

* Update contributions.json

* Update contributions.json

* Update faq.json

* Update user.json

* Create team.json

* Update common.json

* Update analyzer.json

* Prettier

* Prettier

* Prettier

* Update builds.json

* Update calendar.json

* Update common.json

* Update faq.json

* Update team.json

* Create vods.json

* Admin link player action

* Make PlacementTable rounded if only child

* Fix arrow disappeared

* Placements on user page initial

* Remove S2 site link

* Add badge

* Add feature to README

* Fix type error

* Different badge text if XP badge

* Add badge winners script

* Better user avatar + name wrapping for mobile

* Allow script to skip users

* Fix bad align when no weapons in weapon pool

* Add aliases to player name

* Add division icon to placements table

* Link to user page

* Link to xsearch on player details page

* Top 500 icons to user build page

* Working query but slow for weapons page

* Fix lint complaints

* Add cache to builds

* Remove useless SWR value

* Group months in xsearch

* Add xsearch to nav

* Add meta

* Remove TW for now

* Add splatoon3.ink as contributor

* Remove unneeded TODO

* Fix TODOs related to fetching monthYears

* Add FAQ question

* Leaderboards to nav

* Fix sploosh build stat pages returning 404

* Add badge

* Add article

* Patch 3.1

* Fix Prettier issue

* Add badge

* Add April SR gear

* Add badges

* Rename badge

* Add badge

* Add zh badge translation (#1322)

* Splatoon Competitive Guide article (#1316)

* Create splatoon-competitive-guide.md

* Update splatoon-competitive-guide.md

* Fix ToC Issues

* Update splatoon-competitive-guide.md

* Update splatoon-competitive-guide.md

* Update splatoon-competitive-guide.md

* Corrections

* Formatting

---------

Co-authored-by: Kalle <38327916+Sendouc@users.noreply.github.com>

* Fix typos

* Rename table and adjust columns

* Make cache ttl 0 in dev

* Make placements container a bit nicer for mobile

* Rename leftover xxx

* Placements script allow passing number as arg

* Skip leaderboards for now

* Add translations

* Rename placements folder to top-search

* Add placements to seed

* Add E2E tests

* Read in x rank placements script

* Xsearch initial

* XSearch initial

* XSearch with select

* XSearch player page initial

* Admin link player action

* Make PlacementTable rounded if only child

* Fix arrow disappeared

* Placements on user page initial

* Fix bad align when no weapons in weapon pool

* Add aliases to player name

* Add division icon to placements table

* Link to user page

* Link to xsearch on player details page

* Top 500 icons to user build page

* Working query but slow for weapons page

* Fix lint complaints

* Add cache to builds

* Remove useless SWR value

* Group months in xsearch

* Add xsearch to nav

* Add meta

* Remove TW for now

* Add splatoon3.ink as contributor

* Remove unneeded TODO

* Fix TODOs related to fetching monthYears

* Add FAQ question

* Leaderboards to nav

* Fix sploosh build stat pages returning 404

* Rename table and adjust columns

* Make cache ttl 0 in dev

* Make placements container a bit nicer for mobile

* Rename leftover xxx

* Placements script allow passing number as arg

* Skip leaderboards for now

* Add translations

* Rename placements folder to top-search

* Add placements to seed

* Add E2E tests

* Rename url variable and unify

* Tweaks

---------

Co-authored-by: Frederik <112972665+FrederikFraJylland@users.noreply.github.com>
Co-authored-by: Gell <61431488+gellneko@users.noreply.github.com>
Co-authored-by: Zen <99558412+zenpk@users.noreply.github.com>
Co-authored-by: Teddi <83455454+teddinotteddy@users.noreply.github.com>
2023-04-07 21:02:18 +03:00

325 lines
6.5 KiB
TypeScript

import type { TEAM_MEMBER_ROLES } from "~/features/team";
import type {
Ability,
MainWeaponId,
ModeShort,
RankedModeShort,
StageId,
} from "~/modules/in-game-lists";
import type allTags from "../routes/calendar/tags.json";
export interface User {
id: number;
discordId: string;
discordName: string;
discordDiscriminator: string;
discordAvatar: string | null;
twitch: string | null;
twitter: string | null;
youtubeId: string | null;
bio: string | null;
css: string | null;
country: string | null;
customUrl: string | null;
stickSens: number | null;
motionSens: number | null;
inGameName: string | null;
patronTier: number | null;
patronSince: number | null;
/** Used to overwrite normal patron giving process and force give the patron status till this date */
patronTill: number | null;
isVideoAdder: number;
}
/** User table after joined with PlusTier table */
export interface UserWithPlusTier extends User {
plusTier: PlusTier["tier"] | null;
}
export interface UserWeapon {
userId: number;
weaponSplId: MainWeaponId;
createdAt: number;
order: number;
}
export interface PlusSuggestion {
id: number;
text: string;
authorId: number;
suggestedId: number;
month: number;
year: number;
tier: number;
createdAt: number;
}
export interface PlusVote {
month: number;
year: number;
tier: number;
authorId: number;
votedId: number;
score: number;
validAfter: number;
}
export interface PlusVotingResult {
votedId: number;
tier: number;
score: number;
month: number;
year: number;
wasSuggested: number;
passedVoting: number;
}
export interface PlusTier {
userId: number;
tier: number;
}
export interface Badge {
id: number;
code: string;
displayName: string;
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;
}
export interface CalendarEvent {
id: number;
name: string;
authorId: number;
tags: string | null;
description: string | null;
discordInviteCode: string | null;
// generated column
discordUrl: string | null;
bracketUrl: string;
participantCount: number | null;
customUrl: string | null;
/** Is tournament tools page visible */
toToolsEnabled: number;
}
export type CalendarEventTag = keyof typeof allTags;
export interface CalendarEventDate {
id: number;
eventId: number;
startTime: number;
}
export interface CalendarEventResultTeam {
id: number;
eventId: number;
name: string;
placement: number;
}
export interface CalendarEventResultPlayer {
teamId: number;
userId: number | null;
name: string | null;
}
export interface CalendarEventBadge {
eventId: number;
badgeId: number;
}
export interface Build {
id: number;
ownerId: number;
title: string;
description: string | null;
modes: string | null;
headGearSplId: number;
clothesGearSplId: number;
shoesGearSplId: number;
updatedAt: number;
}
export interface BuildWeapon {
buildId: number;
weaponSplId: MainWeaponId;
}
export type GearType = "HEAD" | "CLOTHES" | "SHOES";
export interface BuildAbility {
buildId: number;
gearType: "HEAD" | "CLOTHES" | "SHOES";
ability: Ability;
slotIndex: 0 | 1 | 2 | 3;
abilityPoints: number; // 3 or 10
}
export interface MapPoolMap {
calendarEventId: number | null; // Part of tournament's map pool
tournamentTeamId: number | null; // Part of team's map pool
tieBreakerCalendarEventId: number | null; // Part of the tournament's tiebreaker pool
stageId: StageId;
mode: ModeShort;
}
export interface TournamentTeam {
id: number;
name: string | null;
friendCode: string | null;
createdAt: number;
seed: number | null;
calendarEventId: number;
inviteCode: string;
checkedInAt?: number;
}
export interface TournamentTeamMember {
tournamentTeamId: number;
userId: number;
isOwner: number;
createdAt: number;
}
export type BracketType = "SE" | "DE";
export interface TournamentBracket {
id: number;
calendarEventId: number;
type: BracketType;
}
export interface TournamentRound {
id: number;
// position of the round 1 for Round 1, 2 for Round 2, -1 for Losers Round 1 etc.
position: number;
bracketId: number;
bestOf: number;
}
export interface TournamentMatch {
id: number;
roundId: number;
// TODO tournament: why we need both?
number: number | null;
position: number;
winnerDestinationMatchId: number | null;
loserDestinationMatchId: number | null;
}
export type TeamOrder = "UPPER" | "LOWER";
export interface TournamentMatchParticipant {
order: TeamOrder;
teamId: number;
matchId: number;
}
export interface TournamentMatchGameResult {
id: number;
matchId: number;
stageId: StageId;
mode: ModeShort;
winnerTeamId: number;
reporterId: number;
createdAt: number;
}
export interface UserSubmittedImage {
id: number;
validatedAt: number | null;
url: string;
submitterUserId: number;
}
export interface Team {
id: number;
name: string;
customUrl: string;
inviteCode: string;
css: string | null;
twitter: string | null;
bio: string | null;
avatarImgId: number | null;
bannerImgId: number | null;
createdAt: number;
deletedAt: number | null;
}
export type MemberRole = (typeof TEAM_MEMBER_ROLES)[number];
export interface TeamMember {
teamId: number;
userId: number;
role: MemberRole | null;
isOwner: number;
createdAt: number;
leftAt: number | null;
}
export interface Video {
id: number;
title: string;
type: "SCRIM" | "TOURNAMENT" | "MATCHMAKING" | "CAST";
youtubeDate: number;
eventId: number | null;
youtubeId: string;
submitterUserId: number;
validatedAt: number | null;
}
export interface VideoMatch {
id: number;
videoId: number;
startsAt: number;
stageId: StageId;
mode: ModeShort;
}
export interface VideoMatchPlayer {
videoMatchId: number;
playerUserId: number | null;
playerName: string | null;
weaponSplId: MainWeaponId;
player: number;
}
export interface XRankPlacement {
id: number;
weaponSplId: MainWeaponId;
name: string;
nameDiscriminator: string;
power: number;
rank: number;
title: string;
badges: string; // badge id's separated by comma
bannerSplId: number;
playerId: number;
month: number;
year: number;
mode: RankedModeShort;
region: "WEST" | "JPN";
}
export interface SplatoonPlayer {
id: number;
userId: number;
splId: string;
}