import type { GuildMemberResponse, Snowflake, UserResponse } from "@purrkit/types"; import db, { actors, users } from "@stealth-developers/db"; import fs from "node:fs"; type Data = Record; const file = fs.readFileSync("./members/filtered-map.json", "utf-8"); const memberData: Data = JSON.parse(file); const GUILD_ID = 1; for (const member of Object.values(memberData)) { const [user] = 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() .returning(); if (user) { const [actor] = await db .insert(actors) .values({ userId: user.id, guildId: GUILD_ID, discordId: user.discordId, username: user.username, displayName: user.displayName, avatar: user.avatar, createdAt: new Date(), updatedAt: new Date(), }) .onConflictDoNothing() .returning(); if (actor) { console.log(`actor inserted for member ${member.user.id}`); } } else { console.warn(`no user inserted for member ${member.user.id}`); } } const userFile = fs.readFileSync("./members/filtered-users.json", "utf-8"); const userData: UserResponse[] = JSON.parse(userFile); for (const user of userData) { const [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() .returning(); if (dbUser) { const [actor] = await db .insert(actors) .values({ userId: dbUser.id, guildId: GUILD_ID, discordId: dbUser.discordId, username: dbUser.username, displayName: dbUser.displayName, avatar: dbUser.avatar, createdAt: new Date(), updatedAt: new Date(), }) .onConflictDoNothing() .returning(); if (actor) { console.log(`actor inserted for member ${user.id}`); } else { console.warn(`no actor inserted for member ${user.id}`); } } else { console.warn(`no user inserted for member ${user.id}`); } }