import { WEB } from '@/common/constant';
import { DeviceToken } from '@/entities/device-token.entity';
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';

@Injectable()
export class DeviceTokenService {
  constructor(
    @InjectRepository(DeviceToken)
    private repo: Repository<DeviceToken>,
  ) {}
  async save(userId: string, token: string, deviceId: string, platform: string) {
    let device = await this.repo.findOne({
      where: { token },
      relations: ['user'],
    });

    if (device) {
      device.user = { id: userId } as any;
      device.deviceId = deviceId;
      return this.repo.save(device);
    }

    return this.repo.save({
      token,
      deviceId,
      platform: platform ?? WEB,
      user: { id: userId },
    });
  }

  async remove(deviceId: string) {
    return this.repo.delete({ deviceId });
  }
}
