Files
MemeMind-Server/src/modules/auth/repositories/user-level-progress.repository.ts
2026-04-26 17:08:27 +08:00

37 lines
1.2 KiB
TypeScript

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { UserLevelProgress } from '../entities/user-level-progress.entity';
import { IUserLevelProgressRepository } from './user-level-progress.repository.interface';
@Injectable()
export class UserLevelProgressRepository implements IUserLevelProgressRepository {
constructor(
@InjectRepository(UserLevelProgress)
private readonly repository: Repository<UserLevelProgress>,
) {}
async findByUserId(userId: string): Promise<UserLevelProgress[]> {
return this.repository.find({ where: { userId } });
}
async countByUserId(userId: string): Promise<number> {
return this.repository.count({ where: { userId } });
}
async findByUserAndLevel(
userId: string,
levelId: string,
): Promise<UserLevelProgress | null> {
return this.repository.findOne({ where: { userId, levelId } });
}
create(data: Partial<UserLevelProgress>): UserLevelProgress {
return this.repository.create(data);
}
async save(progress: UserLevelProgress): Promise<UserLevelProgress> {
return this.repository.save(progress);
}
}