Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | 6x 6x 6x 6x 1x 3x 8x 4x 1x 9x 1x 3x 3x 3x | import { Injectable } from '@nestjs/common';
import { PrismaService } from '../prisma/prisma.service';
import { Instrument, Prisma, User } from '@prisma/client';
import { UserBasicInfoDto } from './dto/user.dto';
@Injectable()
export class UserRepository {
constructor(private readonly prisma: PrismaService) {}
async findOneById(id: string): Promise<any> {
return this.prisma.user.findUnique({
where: { id },
include: {
instruments: {
include: {
instrument: true,
},
},
bands: {
include: {
instrument: true,
band: {
include: {
users: {
include: {
user: {
select: {
id: true,
name: true,
avatarId: true,
},
},
},
},
},
},
},
},
},
});
}
async searchUsers(name: string): Promise<UserBasicInfoDto[]> {
return this.prisma.user.findMany({
where: {
name: {
contains: name,
mode: 'insensitive', // Case-insensitive search
},
},
select: {
id: true,
name: true,
avatarId: true,
},
});
}
async findByEmail(email: string): Promise<User | null> {
return this.prisma.user.findUnique({
where: { email },
});
}
async createUser(data: Prisma.UserCreateInput): Promise<User> {
return this.prisma.user.create({
data,
});
}
async updateUser(id: string, data: Prisma.UserUpdateInput): Promise<User> {
return this.prisma.user.update({
where: { id },
data,
});
}
async findById(id: string): Promise<User | null> {
return this.prisma.user.findUnique({
where: { id },
});
}
async deleteSkill(userId: string, instrumentId: string): Promise<void> {
await this.prisma.userInstrument.delete({
where: {
userId_instrumentId: {
userId: userId,
instrumentId: instrumentId,
},
},
});
}
async addSkill(
userId: string,
instrument: string,
level: number,
): Promise<void> {
await this.prisma.userInstrument.create({
data: {
userId,
instrumentId: instrument,
skillLevel: level,
},
});
}
async findInstrument(instrument: string): Promise<Instrument | null> {
return this.prisma.instrument.findFirst({
where: { name: instrument },
});
}
async createInstrument(instrument: string): Promise<Instrument> {
return this.prisma.instrument.create({
data: {
name: instrument,
},
});
}
}
|