mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-04-29 10:47:06 -05:00
* Fix group morphing weidly when members added/removed * Initial * Add stuff from leaderboard * streams/count * Stream count from looking loader * i18n etc. progress * Sorting logic * Remove temp thing * Finish?
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { jsonObjectFrom } from "kysely/helpers/sqlite";
|
|
import { db } from "~/db/sql";
|
|
import { dateToDatabaseTimestamp } from "~/utils/dates";
|
|
import { COMMON_USER_FIELDS } from "~/utils/kysely.server";
|
|
import type { Unwrapped } from "~/utils/types";
|
|
|
|
export type ActiveMatchPlayersItem = Unwrapped<typeof activeMatchPlayers>;
|
|
export function activeMatchPlayers() {
|
|
const oneHourAgo = new Date(Date.now() - 1000 * 60 * 60);
|
|
|
|
return db
|
|
.selectFrom("Group")
|
|
.innerJoin("GroupMatch", (join) =>
|
|
join.on((eb) =>
|
|
eb.or([
|
|
eb("GroupMatch.alphaGroupId", "=", eb.ref("Group.id")),
|
|
eb("GroupMatch.bravoGroupId", "=", eb.ref("Group.id")),
|
|
]),
|
|
),
|
|
)
|
|
.innerJoin("GroupMember", "GroupMember.groupId", "Group.id")
|
|
.select(({ eb }) => [
|
|
"GroupMatch.id as groupMatchId",
|
|
"GroupMatch.createdAt as groupMatchCreatedAt",
|
|
jsonObjectFrom(
|
|
eb
|
|
.selectFrom("User")
|
|
.select([...COMMON_USER_FIELDS, "User.twitch"])
|
|
.whereRef("GroupMember.userId", "=", "User.id"),
|
|
).as("user"),
|
|
])
|
|
.where("Group.status", "=", "ACTIVE")
|
|
.where("GroupMatch.createdAt", ">", dateToDatabaseTimestamp(oneHourAgo))
|
|
.execute();
|
|
}
|