import { Injectable, NotFoundException } from "@nestjs/common"; import { SpotifyConnection } from "../sources/spotify/spotify-connection.entity"; import { CreateOrUpdateDto } from "./dto/create-or-update.dto"; import { User } from "./user.entity"; import { UserRepository } from "./user.repository"; @Injectable() export class UsersService { constructor(private readonly userRepository: UserRepository) {} async findById(id: string): Promise { const user = await this.userRepository.findOne(id); if (!user) { throw new NotFoundException("UserNotFound"); } return user; } async findAll(): Promise { return this.userRepository.find(); } async createOrUpdate(data: CreateOrUpdateDto): Promise { let user = await this.userRepository.findOne({ where: { spotify: { id: data.spotify.id } }, }); if (!user) { user = this.userRepository.create({ spotify: { id: data.spotify.id, }, }); } user.spotify.accessToken = data.spotify.accessToken; user.spotify.refreshToken = data.spotify.refreshToken; user.displayName = data.displayName; user.photo = data.photo; await this.userRepository.save(user); return user; } async updateSpotifyConnection( user: User, spotify: SpotifyConnection ): Promise { // eslint-disable-next-line no-param-reassign user.spotify = spotify; await this.userRepository.save(user); } }