import type { GuildMemberResponse, UserResponse } from "@purrkit/types"; import db, { actors, eq, users } from "@stealth-developers/db"; import fs from "node:fs"; import { GUILD_ID } from "./constants"; const allUsers = JSON.parse( fs.readFileSync("members/fetched-users.json", "utf8"), ) as UserResponse[]; const allMembers = JSON.parse( fs.readFileSync("members/all-members.json", "utf8"), ) as GuildMemberResponse[]; for (const member of allMembers) { const userSelect = await db .select() .from(users) .where(eq(users.discordId, member.user.id)) .limit(1); let dbUser = Array.isArray(userSelect) ? userSelect[0] : undefined; if (!dbUser) { await db .insert(users) .values({ discordId: member.user.id, displayName: member.nick ?? member.user.global_name, username: member.user.username, avatar: member.user.avatar, createdAt: new Date(), updatedAt: new Date(), }) .onConflictDoNothing(); const reSelect = await db .select() .from(users) .where(eq(users.discordId, member.user.id)) .limit(1); dbUser = Array.isArray(reSelect) ? reSelect[0] : undefined; } if (!dbUser) { console.error(`failed to save user for member ${member.user.id}`); continue; } const actorSelect = await db .select() .from(actors) .where(eq(actors.discordId, member.user.id)) .limit(1); const existingActor = Array.isArray(actorSelect) ? actorSelect[0] : undefined; if (!existingActor) { await db .insert(actors) .values({ userId: dbUser.id, discordId: member.user.id, displayName: member.nick ?? member.user.global_name, username: member.user.username, avatar: member.user.avatar, guildId: GUILD_ID, createdAt: new Date(), updatedAt: new Date(), }) .onConflictDoNothing(); } } for (const user of allUsers) { if (!user) { console.error("found empty user entry in fetched-users.json"); continue; } const userSelect = await db.select().from(users).where(eq(users.discordId, user.id)).limit(1); console.log(userSelect); let dbUser = Array.isArray(userSelect) ? userSelect[0] : undefined; if (!dbUser) { await db .insert(users) .values({ discordId: user.id, displayName: user.global_name, username: user.username, avatar: user.avatar, createdAt: new Date(), updatedAt: new Date(), }) .onConflictDoNothing(); const reSelect = await db.select().from(users).where(eq(users.discordId, user.id)).limit(1); dbUser = Array.isArray(reSelect) ? reSelect[0] : undefined; } if (!dbUser) { console.error(`failed to save user ${user.id}`); continue; } const actorSelect = await db.select().from(actors).where(eq(actors.discordId, user.id)).limit(1); const existingActor = Array.isArray(actorSelect) ? actorSelect[0] : undefined; if (!existingActor) { await db .insert(actors) .values({ userId: dbUser.id, discordId: user.id, displayName: user.global_name, username: user.username, avatar: user.avatar, guildId: GUILD_ID, createdAt: new Date(), updatedAt: new Date(), }) .onConflictDoNothing(); } }