@kazion/create-app
Version:
A cli tool to help you get started with graphql and rest api's with typescript
94 lines (87 loc) • 2.06 kB
text/typescript
import { PrismaClient, User } from '@prisma/client';
import { UserPayload } from '~/modules/auth/auth.schema';
export class UserService {
static async createUser(
prisma: PrismaClient,
user: UserPayload,
): Promise<User> {
const newUser = await prisma.user.create({
data: {
name: user.name,
email: user.email,
phoneNumber: user.phoneNumber,
password: user.password,
avatar: user.avatar,
dateJoined: new Date(),
},
});
return newUser;
}
static async updateUser(prisma: PrismaClient, id: string, user: User) {
const updatedUser = await prisma.user.update({
where: {
id,
},
data: {
name: user.name,
phoneNumber: user.phoneNumber,
avatar: user.avatar,
lastLogin: user.lastLogin,
},
});
return updatedUser;
}
static async updateUserToken(
prisma: PrismaClient,
id: string,
user: Partial<User>,
) {
const updatedUser = await prisma.user.update({
where: {
id,
},
data: {
token: user.token,
lastLogin: user.lastLogin,
},
});
return updatedUser;
}
static async getUserByPhone(prisma: PrismaClient, phoneNumber: string) {
const user = await prisma.user.findUnique({
where: {
phoneNumber,
},
});
return user;
}
static async getUserById(prisma: PrismaClient, id: string): Promise<User> {
const user = await prisma.user.findUnique({
where: {
id,
},
select: {
id: true,
name: true,
phoneNumber: true,
token: true,
avatar: true,
lastLogin: true,
dateJoined: true,
},
});
return user as any;
}
static async getUsers(prisma: PrismaClient): Promise<User[]> {
const users = await prisma.user.findMany({
select: {
id: true,
name: true,
phoneNumber: true,
avatar: true,
lastLogin: true,
},
});
return users as any;
}
}