import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { DummyValue, GenerateSql } from 'src/decorators'; import { UserTokenEntity } from 'src/entities/user-token.entity'; import { IUserTokenRepository } from 'src/interfaces/user-token.interface'; import { Instrumentation } from 'src/utils/instrumentation'; import { Repository } from 'typeorm'; @Instrumentation() @Injectable() export class UserTokenRepository implements IUserTokenRepository { constructor(@InjectRepository(UserTokenEntity) private repository: Repository) {} @GenerateSql({ params: [DummyValue.STRING] }) getByToken(token: string): Promise { return this.repository.findOne({ where: { token }, relations: { user: true } }); } getAll(userId: string): Promise { return this.repository.find({ where: { userId, }, relations: { user: true, }, order: { updatedAt: 'desc', createdAt: 'desc', }, }); } create(userToken: Partial): Promise { return this.repository.save(userToken); } save(userToken: Partial): Promise { return this.repository.save(userToken); } @GenerateSql({ params: [DummyValue.UUID] }) async delete(id: string): Promise { await this.repository.delete({ id }); } }