bid-tool/auto-bid-server/src/modules/scraps/services/scrap-config.service.ts

55 lines
1.5 KiB
TypeScript

import AppResponse from '@/response/app-response';
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { plainToClass } from 'class-transformer';
import { IsNull, Not, Repository } from 'typeorm';
import { CreateScrapConfigDto } from '../dto/scrap-config/create-scrap-config';
import { UpdateScrapConfigDto } from '../dto/scrap-config/update-scrap-config';
import { ScrapConfig } from '../entities/scrap-config.entity';
@Injectable()
export class ScrapConfigsService {
constructor(
@InjectRepository(ScrapConfig)
readonly scrapConfigRepo: Repository<ScrapConfig>,
) {}
async clientGetScrapeConfigs() {
const data = await this.scrapConfigRepo.find({
where: {
search_url: Not(IsNull()),
keywords: Not(IsNull()),
enable: true,
},
relations: {
web_bid: true,
},
});
return AppResponse.toResponse(plainToClass(ScrapConfig, data));
}
async create(data: CreateScrapConfigDto) {
const result = await this.scrapConfigRepo.save({
search_url: data.search_url,
keywords: data.keywords,
web_bid: { id: data.web_id },
});
if (!result) return AppResponse.toResponse(false);
return AppResponse.toResponse(true);
}
async update(
id: ScrapConfig['id'],
{ web_id, ...data }: UpdateScrapConfigDto,
) {
const result = await this.scrapConfigRepo.update(id, { ...data });
if (!result.affected) return AppResponse.toResponse(false);
return AppResponse.toResponse(true);
}
}