first commit
This commit is contained in:
80
myteamwallet_backend/src/users/users.service.ts
Normal file
80
myteamwallet_backend/src/users/users.service.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Player } from 'src/players/entities/player.entity';
|
||||
import { EntityCondition } from 'src/utils/types/entity-condition.type';
|
||||
import { IPaginationOptions } from 'src/utils/types/pagination-options';
|
||||
import { Repository } from 'typeorm';
|
||||
import { CreateUserDto } from './dto/create-user.dto';
|
||||
import { UpdateUserDto } from './dto/update-user.dto';
|
||||
import { User } from './entities/user.entity';
|
||||
|
||||
@Injectable()
|
||||
export class UsersService {
|
||||
constructor(
|
||||
@InjectRepository(User)
|
||||
private usersRepository: Repository<User>,
|
||||
@InjectRepository(Player)
|
||||
private playersRepository: Repository<Player>,
|
||||
) {}
|
||||
|
||||
create(createProfileDto: CreateUserDto) {
|
||||
return this.usersRepository.save(
|
||||
this.usersRepository.create(createProfileDto),
|
||||
);
|
||||
}
|
||||
|
||||
findManyWithPagination(paginationOptions: IPaginationOptions) {
|
||||
return this.usersRepository.find({
|
||||
skip: (paginationOptions.page - 1) * paginationOptions.limit,
|
||||
take: paginationOptions.limit,
|
||||
});
|
||||
}
|
||||
|
||||
findOne(fields: EntityCondition<User>) {
|
||||
return this.usersRepository.findOne({
|
||||
where: fields,
|
||||
});
|
||||
}
|
||||
|
||||
update(id: number, updateProfileDto: UpdateUserDto) {
|
||||
return this.usersRepository.save(
|
||||
this.usersRepository.create({
|
||||
id,
|
||||
...updateProfileDto,
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
async softDelete(id: number): Promise<void> {
|
||||
await this.usersRepository.softDelete(id);
|
||||
}
|
||||
|
||||
async findTeams(fields: EntityCondition<User>) {
|
||||
const user = await this.findOne(fields);
|
||||
if (!user) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const players = await this.playersRepository.find({
|
||||
where: {
|
||||
user: {
|
||||
id: user.id,
|
||||
},
|
||||
},
|
||||
relations: ['team'],
|
||||
});
|
||||
return players;
|
||||
}
|
||||
|
||||
async linkPlayerToUserId(user: User, playerId: number): Promise<boolean> {
|
||||
return new Promise<boolean>(async (resolve) => {
|
||||
const player = await this.playersRepository.findOneByOrFail({
|
||||
id: playerId,
|
||||
});
|
||||
|
||||
player.user = user;
|
||||
await this.playersRepository.save(player);
|
||||
return resolve(true);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user