all repos — stealth-developers @ daca13a6ef949c27e8b29443201b8a5f86a34942

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
import type { GuildMemberResponse, UserResponse } from "@purrkit/types";

import db, { actors, 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 [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) {
		console.error(`failed to save user for member ${member.user.id}`);
		continue;
	}

	await db
		.insert(actors)
		.values({
			userId: user.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(`failed to save user ${user.id}`);
		continue;
	}

	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) {
		console.error(`failed to save user ${user.id}`);
		continue;
	}

	const [dbActor] = 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()
		.returning();

	if (!dbActor) {
		console.error(`failed to save actor for user ${user.id}`);
	}
}