apps/migration/src/4.save-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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
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();
}
}
|