This commit is contained in:
parent
af1424edc2
commit
9785a8c087
13
README.md
13
README.md
@ -169,20 +169,13 @@
|
|||||||
"lastJoined": number | null,
|
"lastJoined": number | null,
|
||||||
// Gewichtung aller Strikes
|
// Gewichtung aller Strikes
|
||||||
"strikeWeight": number,
|
"strikeWeight": number,
|
||||||
// Spieler 1 des Teams
|
// Alle Spieler des Teams
|
||||||
"memberOne": {
|
"users": {
|
||||||
// UUID des Spielers
|
// UUID des Spielers
|
||||||
"uuid": string,
|
"uuid": string,
|
||||||
// Ob der Spieler Tot ist
|
// Ob der Spieler Tot ist
|
||||||
"dead": boolean
|
"dead": boolean
|
||||||
} | null,
|
}[]
|
||||||
// Spieler 2 des Teams
|
|
||||||
"memberTwo": {
|
|
||||||
// UUID des Spielers
|
|
||||||
"uuid": string,
|
|
||||||
// Ob der Spieler Tot ist
|
|
||||||
"dead": boolean
|
|
||||||
} | null
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { alias, char, int, mysqlTable, timestamp, varchar } from 'drizzle-orm/mysql-core';
|
import { char, int, mysqlTable, timestamp, varchar } from 'drizzle-orm/mysql-core';
|
||||||
import type { MySql2Database } from 'drizzle-orm/mysql2';
|
import type { MySql2Database } from 'drizzle-orm/mysql2';
|
||||||
import { aliasedTable, and, asc, desc, eq, like, sql } from 'drizzle-orm';
|
import { aliasedTable, and, asc, desc, eq, like, sql } from 'drizzle-orm';
|
||||||
import { teamMember } from './teamMember.ts';
|
import { teamMember } from './teamMember.ts';
|
||||||
@ -135,13 +135,6 @@ export async function getTeams(db: Database, values: GetTeamsReq) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function getTeamsFull(db: Database, _values: GetTeamsFullReq) {
|
export async function getTeamsFull(db: Database, _values: GetTeamsFullReq) {
|
||||||
const memberOneTeamMember = alias(teamMember, 'member_one_team_member');
|
|
||||||
const memberTwoTeamMember = alias(teamMember, 'member_two_team_member');
|
|
||||||
const memberOneUser = alias(user, 'member_one_user');
|
|
||||||
const memberTwoUser = alias(user, 'member_two_user');
|
|
||||||
const memberOneDeath = alias(death, 'member_one_death');
|
|
||||||
const memberTwoDeath = alias(death, 'member_two_death');
|
|
||||||
|
|
||||||
const strikeWeightSubquery = db
|
const strikeWeightSubquery = db
|
||||||
.select({
|
.select({
|
||||||
teamId: team.id,
|
teamId: team.id,
|
||||||
@ -157,19 +150,14 @@ export async function getTeamsFull(db: Database, _values: GetTeamsFullReq) {
|
|||||||
return db
|
return db
|
||||||
.select({
|
.select({
|
||||||
team: team,
|
team: team,
|
||||||
memberOne: memberOneUser,
|
user: user,
|
||||||
memberTwo: memberTwoUser,
|
death: death,
|
||||||
memberOneDeath: memberOneDeath,
|
|
||||||
memberTwoDeath: memberTwoDeath,
|
|
||||||
strikeWeight: strikeWeightSubquery.strikeWeight
|
strikeWeight: strikeWeightSubquery.strikeWeight
|
||||||
})
|
})
|
||||||
.from(team)
|
.from(team)
|
||||||
.leftJoin(memberOneTeamMember, eq(team.id, memberOneTeamMember.teamId))
|
.leftJoin(teamMember, eq(team.id, teamMember.teamId))
|
||||||
.leftJoin(memberTwoTeamMember, eq(team.id, memberTwoTeamMember.teamId))
|
.leftJoin(user, eq(teamMember.userId, user.id))
|
||||||
.leftJoin(memberOneUser, eq(memberOneTeamMember.userId, memberOneUser.id))
|
.leftJoin(death, eq(user.id, death.deadUserId))
|
||||||
.leftJoin(memberTwoUser, eq(memberTwoTeamMember.userId, memberTwoUser.id))
|
|
||||||
.leftJoin(memberOneDeath, eq(memberOneUser.id, memberOneDeath.deadUserId))
|
|
||||||
.leftJoin(memberTwoDeath, eq(memberTwoUser.id, memberTwoDeath.deadUserId))
|
|
||||||
.leftJoin(strikeWeightSubquery, eq(team.id, strikeWeightSubquery.teamId));
|
.leftJoin(strikeWeightSubquery, eq(team.id, strikeWeightSubquery.teamId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,27 +9,25 @@ export const GET: APIRoute = async ({ request }) => {
|
|||||||
|
|
||||||
const teams = await db.getTeamsFull({});
|
const teams = await db.getTeamsFull({});
|
||||||
|
|
||||||
const response = [];
|
const response = {} as Record<number, any>;
|
||||||
for (const team of teams) {
|
for (const team of teams) {
|
||||||
response.push({
|
if (response[team.team.id] === undefined) {
|
||||||
|
response[team.team.id] = {
|
||||||
name: team.team.name,
|
name: team.team.name,
|
||||||
color: team.team.color,
|
color: team.team.color,
|
||||||
lastJoined: team.team.lastJoined ? new Date(team.team.lastJoined).getTime() : null,
|
lastJoined: team.team.lastJoined ? new Date(team.team.lastJoined).getTime() : null,
|
||||||
strikeWeight: team.strikeWeight ?? 0,
|
strikeWeight: team.strikeWeight ?? 0,
|
||||||
memberOne: team.memberOne
|
users: []
|
||||||
? {
|
};
|
||||||
uuid: team.memberOne.uuid,
|
|
||||||
dead: team.memberOneDeath != null
|
|
||||||
}
|
|
||||||
: null,
|
|
||||||
memberTwo: team.memberTwo
|
|
||||||
? {
|
|
||||||
uuid: team.memberTwo.uuid,
|
|
||||||
dead: team.memberTwoDeath != null
|
|
||||||
}
|
|
||||||
: null
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Response(JSON.stringify(response));
|
if (team.user) {
|
||||||
|
response[team.team.id].users.push({
|
||||||
|
uuid: team.user.uuid,
|
||||||
|
dead: team.death != null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Response(JSON.stringify(Object.values(response)));
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user