From 69610cbbb52f1ff927d80d005d545c84a7947636 Mon Sep 17 00:00:00 2001 From: Admin Date: Mon, 21 Jul 2025 13:57:22 +0700 Subject: [PATCH] add api get scrape items --- .../src/modules/bids/bids.module.ts | 1 + .../client/scrap-items.controller.ts | 6 ++++ .../services/scrap-item-config.service.ts | 32 +++++++++++++++++++ auto-bid-server/src/response/app-response.ts | 3 +- 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/auto-bid-server/src/modules/bids/bids.module.ts b/auto-bid-server/src/modules/bids/bids.module.ts index 38e2a91..b90fcf4 100644 --- a/auto-bid-server/src/modules/bids/bids.module.ts +++ b/auto-bid-server/src/modules/bids/bids.module.ts @@ -90,6 +90,7 @@ import { AdminBidMetadataController } from './controllers/admin/admin-bid-metada ConfigsService, DashboardService, HotItemApi, + WebBidsService, ], }) export class BidsModule {} diff --git a/auto-bid-server/src/modules/scraps/controllers/client/scrap-items.controller.ts b/auto-bid-server/src/modules/scraps/controllers/client/scrap-items.controller.ts index edec506..187bf45 100644 --- a/auto-bid-server/src/modules/scraps/controllers/client/scrap-items.controller.ts +++ b/auto-bid-server/src/modules/scraps/controllers/client/scrap-items.controller.ts @@ -3,6 +3,7 @@ import { ScrapConfigsService } from '../../services/scrap-config.service'; import { ScrapItemsService } from '../../services/scrap-item-config.service'; import { UpsertScrapItemDto } from '../../dto/scrap-items/upsert-scrap-item.dto'; import { ScrapItem } from '../../entities/scrap-item.entity'; +import { Paginate, PaginateQuery } from 'nestjs-paginate'; @Controller('scrap-items') export class ClientScrapItemsController { @@ -14,4 +15,9 @@ export class ClientScrapItemsController { data as ScrapItem[], ); } + + @Get() + async index(@Paginate() query: PaginateQuery) { + return await this.scrapItemsService.index(query); + } } diff --git a/auto-bid-server/src/modules/scraps/services/scrap-item-config.service.ts b/auto-bid-server/src/modules/scraps/services/scrap-item-config.service.ts index 0ef6c70..6fde0d0 100644 --- a/auto-bid-server/src/modules/scraps/services/scrap-item-config.service.ts +++ b/auto-bid-server/src/modules/scraps/services/scrap-item-config.service.ts @@ -3,12 +3,21 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { ScrapItem } from '../entities/scrap-item.entity'; import AppResponse from '@/response/app-response'; +import { + FilterOperator, + FilterSuffix, + paginate, + PaginateQuery, +} from 'nestjs-paginate'; +import { Column } from 'nestjs-paginate/lib/helper'; +import { WebBidsService } from '@/modules/bids/services/web-bids.service'; @Injectable() export class ScrapItemsService { constructor( @InjectRepository(ScrapItem) readonly scrapItemRepo: Repository, + private readonly webService: WebBidsService, ) {} async upsertScrapItems(items: ScrapItem[]) { @@ -67,4 +76,27 @@ export class ScrapItemsService { return AppResponse.toResponse(rs); } + + async index(query: PaginateQuery) { + const data = await paginate(query, this.scrapItemRepo, { + sortableColumns: ['id'], + searchableColumns: ['id'], + defaultLimit: 15, + filterableColumns: { + 'scrap_config.web_bid.origin_url': true, + }, + defaultSortBy: [['updated_at', 'DESC']], + maxLimit: 100, + }); + + const sources = await this.webService.webBidRepo.find({ + select: { origin_url: true }, + }); + + return AppResponse.toPagination( + { ...data, bonus: { sources } }, + true, + ScrapItem, + ); + } } diff --git a/auto-bid-server/src/response/app-response.ts b/auto-bid-server/src/response/app-response.ts index a2afd71..088ce4f 100644 --- a/auto-bid-server/src/response/app-response.ts +++ b/auto-bid-server/src/response/app-response.ts @@ -25,7 +25,7 @@ export default class AppResponse { } public static toPagination( - { data, meta }: Paginated, + { data, meta, bonus }: Paginated & { bonus?: Record }, transform = true, dtoClass?: new () => M, ) { @@ -45,6 +45,7 @@ export default class AppResponse { last_page: meta.totalPages, per_page: meta.itemsPerPage, total: meta.totalItems, + ...bonus, }, }); }