mirror of
https://github.com/BradNut/boredgame
synced 2025-09-08 17:40:22 +00:00
56 lines
1 KiB
TypeScript
56 lines
1 KiB
TypeScript
import { auth } from '$lib/server/lucia';
|
|
import prisma from '$lib/prisma';
|
|
import type { User } from '@prisma/client';
|
|
import { add_user_to_role } from './roles';
|
|
|
|
export function create_user(user: User) {
|
|
return prisma.user.create({
|
|
data: {
|
|
username: user.username
|
|
}
|
|
});
|
|
}
|
|
|
|
export async function find_or_create_user(user: User) {
|
|
const existing_user = await prisma.user.findUnique({
|
|
where: {
|
|
username: user.username
|
|
}
|
|
});
|
|
if (existing_user) {
|
|
return existing_user;
|
|
} else {
|
|
const new_user = await create_user(user);
|
|
add_user_to_role(new_user.id, 'user');
|
|
return new_user;
|
|
}
|
|
}
|
|
|
|
export async function find_user_with_roles(user_id: string) {
|
|
const user_with_roles = await prisma.user.findUnique({
|
|
where: {
|
|
id: user_id
|
|
},
|
|
include: {
|
|
roles: {
|
|
select: {
|
|
role: {
|
|
select: {
|
|
name: true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
if (!user_with_roles) {
|
|
throw new Error('User not found');
|
|
}
|
|
|
|
const user = {
|
|
...user_with_roles,
|
|
roles: user_with_roles.roles.map((user_role) => user_role.role.name)
|
|
};
|
|
|
|
return user;
|
|
}
|