upload file/avatar

This commit is contained in:
2025-05-15 16:33:51 +07:00
parent d97dfd25e2
commit ae7f2cd114
19 changed files with 648 additions and 64 deletions

View File

@@ -1,53 +1,66 @@
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import User from './user.entity';
import {HttpException, HttpStatus, Injectable} from '@nestjs/common';
import {InjectRepository} from '@nestjs/typeorm';
import {Repository} from 'typeorm';
import User from './entities/user.entity';
import CreateUserDto from './dto/createUser.dto';
import * as bcrypt from 'bcrypt';
import {FilesService} from "../files/files.service";
@Injectable()
export class UsersService {
constructor(
@InjectRepository(User)
private usersRepository: Repository<User>,
) {}
async getByEmail(email: string) {
const user = await this.usersRepository.findOne({ where: { email } });
if (user) {
return user;
constructor(
@InjectRepository(User)
private usersRepository: Repository<User>,
private readonly filesService: FilesService
) {
}
throw new HttpException(
'User with this email does not exist',
HttpStatus.NOT_FOUND,
);
}
async getById(id: number) {
const user = await this.usersRepository.findOne({ where: { id } });
if (user) {
return user;
async getByEmail(email: string) {
const user = await this.usersRepository.findOne({where: {email}});
if (user) {
return user;
}
throw new HttpException(
'User with this email does not exist',
HttpStatus.NOT_FOUND,
);
}
throw new HttpException('User with this id does not exist', HttpStatus.NOT_FOUND);
}
async create(userData: CreateUserDto) {
const newUser = this.usersRepository.create(userData);
await this.usersRepository.save(newUser);
return newUser;
}
async getById(id: number) {
const user = await this.usersRepository.findOne({where: {id}});
if (user) {
return user;
}
throw new HttpException('User with this id does not exist', HttpStatus.NOT_FOUND);
}
async addAvatar(userId: number, imageBuffer: Buffer, filename: string) {
const avatar = await this.filesService.uploadPublicFile(imageBuffer, filename);
const user = await this.getById(userId);
await this.usersRepository.update(userId, {
...user,
avatar
});
return avatar;
}
async create(userData: CreateUserDto) {
const newUser = this.usersRepository.create(userData);
await this.usersRepository.save(newUser);
return newUser;
}
async setCurrentRefreshToken(refreshToken: string, userId: number) {
const currentHashedRefreshToken = await bcrypt.hash(refreshToken, 10);
await this.usersRepository.update(userId, {
currentHashedRefreshToken,
});
}
const currentHashedRefreshToken = await bcrypt.hash(refreshToken, 10);
await this.usersRepository.update(userId, {
currentHashedRefreshToken,
});
}
async removeRefreshToken(userId: number) {
return this.usersRepository.update(userId, {
currentHashedRefreshToken: null,
});
}
return this.usersRepository.update(userId, {
currentHashedRefreshToken: null,
});
}
}