first commit

This commit is contained in:
Bastian Wagner
2026-07-31 21:02:47 +02:00
commit 6bea4f766a
512 changed files with 64459 additions and 0 deletions

View 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);
});
}
}