mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-09-07 19:55:46 -05:00
Add ChatRepository and chat factories
This commit is contained in:
@@ -7,6 +7,7 @@ import * as LogInLinkRepository from "~/features/auth/LogInLinkRepository.server
|
||||
import * as BadgeRepository from "~/features/badges/BadgeRepository.server";
|
||||
import * as BuildRepository from "~/features/builds/BuildRepository.server";
|
||||
import * as CalendarRepository from "~/features/calendar/CalendarRepository.server";
|
||||
import * as ChatRepository from "~/features/chat/ChatRepository.server";
|
||||
import * as FriendRepository from "~/features/friends/FriendRepository.server";
|
||||
import * as ImageRepository from "~/features/img-upload/ImageRepository.server";
|
||||
import * as LeaderboardRepository from "~/features/leaderboards/LeaderboardRepository.server";
|
||||
@@ -232,6 +233,11 @@ export function buildCases(fx: Fixtures): {
|
||||
(eventId) => CalendarRepository.findTopThreeResultsByEventIds([eventId]),
|
||||
);
|
||||
|
||||
// ChatRepository
|
||||
add("ChatRepository.findAllMessagesByRoomId", fx.heavyChatRoomId, (roomId) =>
|
||||
ChatRepository.findAllMessagesByRoomId(roomId),
|
||||
);
|
||||
|
||||
// FriendRepository
|
||||
add("FriendRepository.findByUserIdWithActivity", fx.heavyFriendPair, (pair) =>
|
||||
FriendRepository.findByUserIdWithActivity(pair.userId),
|
||||
|
||||
@@ -41,6 +41,8 @@ export interface Fixtures {
|
||||
recentTournamentIds: number[] | null;
|
||||
heavyTeam: { id: number; customUrl: string; memberUserId: number } | null;
|
||||
heavyCalendarEventId: number | null;
|
||||
/** Chat room with the most messages. Null until the prod copy has post-migration chat data. */
|
||||
heavyChatRoomId: number | null;
|
||||
resultsEventId: number | null;
|
||||
calendarAuthorId: number | null;
|
||||
calendarWindow: { startTime: Date; endTime: Date } | null;
|
||||
@@ -150,6 +152,7 @@ export async function resolveFixtures(): Promise<Fixtures> {
|
||||
recentTournamentIds: await resolveRecentTournamentIds(),
|
||||
heavyTeam: await resolveHeavyTeam(),
|
||||
heavyCalendarEventId: await resolveHeavyCalendarEventId(),
|
||||
heavyChatRoomId: await resolveHeavyChatRoomId(),
|
||||
resultsEventId: await resolveResultsEventId(),
|
||||
calendarAuthorId: await resolveCalendarAuthorId(),
|
||||
calendarWindow: await resolveCalendarWindow(),
|
||||
@@ -595,6 +598,18 @@ async function resolveCalendarAuthorId() {
|
||||
return row?.authorId ?? null;
|
||||
}
|
||||
|
||||
async function resolveHeavyChatRoomId() {
|
||||
const row = await db
|
||||
.selectFrom("ChatMessage")
|
||||
.select(({ fn }) => ["roomId", fn.countAll<number>().as("count")])
|
||||
.groupBy("roomId")
|
||||
.orderBy("count", "desc")
|
||||
.limit(1)
|
||||
.executeTakeFirst();
|
||||
|
||||
return row?.roomId ?? null;
|
||||
}
|
||||
|
||||
async function resolveCalendarWindow() {
|
||||
const row = await db
|
||||
.selectFrom("CalendarEventDate")
|
||||
|
||||
Reference in New Issue
Block a user