all repos — stealth-developers @ 60c7770aaf3859b7ded2371dd62d6e72be931242

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

import db, { actors, users } from "@stealth-developers/db";
import fs from "node:fs";

type Data = Record<Snowflake, GuildMemberResponse>;

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}`);
	}
}