all repos — stealth-developers @ 750b579d9db8101d4b6ffdd2f814de11d899963e

apps/migration/src/collect-users.ts (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
import type { GuildMemberResponse } from "@purrkit/types";

import fs from "node:fs";

import { db, tickets } from "./old-db";

const users = await db
	.select({
		subjectId: tickets.authorId,
		closerId: tickets.closedBy,
	})
	.from(tickets)
	.execute(); // { subjectId, closerId }[]

const activeUserIds = new Set<string>();
for (const row of users) {
	if (row.subjectId) activeUserIds.add(row.subjectId);
	if (row.closerId) activeUserIds.add(row.closerId);
}

const membersArray = JSON.parse(
	fs.readFileSync("members/members.json", "utf-8"),
) as GuildMemberResponse[];

const allMembersLookup = new Map<string, GuildMemberResponse>(
	membersArray.map((member) => [member.user.id, member]),
);

const membersMap: Record<string, GuildMemberResponse> = {};
const missingUserIds: string[] = [];

for (const id of activeUserIds) {
	const member = allMembersLookup.get(id);
	if (member) {
		membersMap[id] = member;
	} else {
		missingUserIds.push(id);
	}
}