sendou.ink/app/features/sendouq-streams/QStreamsRepository.server.ts
Kalle c984c33f70
SendouQ streams (#1607)
* 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?
2023-12-13 22:29:00 +02:00

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();
}