search.ts 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. import { defineEventHandler, EventHandlerRequest } from 'h3';
  2. import { DB } from '~~/server/db/DB';
  3. import { createErrorResponse, createSuccessResponse, IResponse } from '~~/server/utils/response';
  4. import { ICommonPageResult } from '~~/server/db/CommonModel';
  5. import type { IArticle } from './[id]';
  6. export default defineEventHandler<EventHandlerRequest, Promise<IResponse<ICommonPageResult<IArticle>>>>(async (event) => {
  7. try {
  8. const query = getQuery(event);
  9. const page = Number(query.page as string) || 1;
  10. const pageSize = Number(query.pageSize as string) || 10;
  11. const search = query.search as string;
  12. // 2. 从pr_cms_archives表中通过channel_id查询文章
  13. const articles = await DB.table('pr_cms_archives')
  14. .where('status', 'normal')
  15. .whereNull('deletetime')
  16. .where('title', 'like', `%${search}%`)
  17. .orderBy('weigh', 'desc')
  18. .orderBy('publishtime', 'desc')
  19. .orderBy('createtime', 'desc')
  20. .orderBy('id', 'asc')
  21. .paginate(page, pageSize);
  22. if (!articles)
  23. return createErrorResponse('文章不存在');
  24. return createSuccessResponse(articles);
  25. } catch (error) {
  26. return createErrorResponse(error);
  27. }
  28. });