import { Injectable, Logger } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Cron, CronExpression } from '@nestjs/schedule';
import { ApiLog } from './entities/api-log.entity';
import * as moment from 'moment';

@Injectable()
export class ApiLogsRepository {
  private readonly logger = new Logger(ApiLogsRepository.name);

  constructor(
    @InjectRepository(ApiLog)
    private readonly apiLogsRepository: Repository<ApiLog>,
  ) {}

  @Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT)
  async handleCron() {
    const tenDaysAgo = moment().utc().subtract(10, 'days').toDate();

    return await this.apiLogsRepository
      .createQueryBuilder('api_logs')
      .where('api_logs.created_at < :tenDaysAgo', {
        tenDaysAgo: tenDaysAgo,
      })
      .delete()
      .execute();
  }
}
