From d767108fcffc7d79744a5829af56696a0fe28c5b Mon Sep 17 00:00:00 2001 From: louiscklaw Date: Fri, 13 Jun 2025 18:11:12 +0800 Subject: [PATCH] fix broken build, --- 03_source/cms_backend/dev.sh | 9 ---- 03_source/cms_backend/prisma/schema.prisma | 1 + .../src/app/api/AccessLog/detail/route.ts | 5 ++- .../cms_backend/src/app/api/AppLog/route.ts | 41 ++++++++++--------- .../src/app/api/event/search/route.ts | 37 ++++++++--------- .../cms_backend/src/app/api/order/route.ts | 6 +-- .../cms_backend/src/app/api/product/route.ts | 5 ++- .../cms_backend/src/app/api/student/route.ts | 3 +- .../src/app/api/user/checkAdmin/route.ts | 4 +- .../src/app/api/user/helloworld/route.ts | 4 +- .../cms_backend/src/app/api/user/route.ts | 17 ++++---- .../src/app/services/AccessLog.service.ts | 12 ++++++ .../src/app/services/event.service.ts | 17 ++++---- .../src/app/services/eventItem.service.ts | 8 ++-- .../src/app/services/order.service.ts | 17 +++++++- .../src/app/services/userItem.service.ts | 4 +- 03_source/cms_backend/tsconfig.json | 3 +- 03_source/cms_backend/yarn.lock | 19 +++++++++ 18 files changed, 130 insertions(+), 82 deletions(-) delete mode 100755 03_source/cms_backend/dev.sh diff --git a/03_source/cms_backend/dev.sh b/03_source/cms_backend/dev.sh deleted file mode 100755 index 216b96b..0000000 --- a/03_source/cms_backend/dev.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -while true; do - yarn --dev - yarn dev - - echo "restarting..." - sleep 1 -done diff --git a/03_source/cms_backend/prisma/schema.prisma b/03_source/cms_backend/prisma/schema.prisma index c95cc92..e030df0 100644 --- a/03_source/cms_backend/prisma/schema.prisma +++ b/03_source/cms_backend/prisma/schema.prisma @@ -1144,6 +1144,7 @@ model EventReview { eventItemId String? } +// NOTE: need to consider with Event // mapped to IEventItem model EventItem { id String @id @default(uuid()) diff --git a/03_source/cms_backend/src/app/api/AccessLog/detail/route.ts b/03_source/cms_backend/src/app/api/AccessLog/detail/route.ts index 4b9ea59..02b0c71 100644 --- a/03_source/cms_backend/src/app/api/AccessLog/detail/route.ts +++ b/03_source/cms_backend/src/app/api/AccessLog/detail/route.ts @@ -10,7 +10,8 @@ import type { NextRequest } from 'next/server'; import { STATUS, response, handleError } from 'src/utils/response'; -import { AccessLogService } from '../../../../modules/AccessLog/AccessLog.service'; +// import { AccessLogService } from '../../../../modules/AccessLog/AccessLog.service'; +import { getAccessLogById } from 'src/app/services/AccessLog.service'; // ---------------------------------------------------------------------- @@ -27,7 +28,7 @@ export async function GET(req: NextRequest) { const accessLogId = searchParams.get('accessLogId'); if (!accessLogId) return response({ message: 'accessLogId is required!' }, STATUS.BAD_REQUEST); - const accessLog = await AccessLogService.findById(accessLogId); + const accessLog = await getAccessLogById(accessLogId); if (!accessLog) return response({ message: 'AccessLog not found!' }, STATUS.NOT_FOUND); diff --git a/03_source/cms_backend/src/app/api/AppLog/route.ts b/03_source/cms_backend/src/app/api/AppLog/route.ts index 5fd3ec6..ce22c18 100644 --- a/03_source/cms_backend/src/app/api/AppLog/route.ts +++ b/03_source/cms_backend/src/app/api/AppLog/route.ts @@ -2,7 +2,7 @@ import type { NextRequest, NextResponse } from 'next/server'; import { STATUS, response, handleError } from 'src/utils/response'; -import { listAppLogs, deleteAppLog, updateAppLog, createNewAppLog } from 'src/app/services/AppLog.service'; +import { listAppLogs, deleteAppLog, createNewAppLog } from 'src/app/services/AppLog.service'; // import prisma from '../../lib/prisma'; @@ -34,28 +34,29 @@ export async function POST(req: NextRequest) { } } -/** - *************************************** - * PUT - update AppLog - *************************************** - */ -export async function PUT(req: NextRequest) { - const { searchParams } = req.nextUrl; - const appLogId = searchParams.get('appLogId'); +// TODO: delete `update AppLog` +// /** +// *************************************** +// * PUT - update AppLog +// *************************************** +// */ +// export async function PUT(req: NextRequest) { +// const { searchParams } = req.nextUrl; +// const appLogId = searchParams.get('appLogId'); - const { data } = await req.json(); +// const { data } = await req.json(); - try { - if (!appLogId) throw new Error('appLogId cannot null'); - const id: number = parseInt(appLogId); +// try { +// if (!appLogId) throw new Error('appLogId cannot null'); +// const id: number = parseInt(appLogId); - const updateResult = await updateAppLog(id, data); +// const updateResult = await updateAppLog(id, data); - return response(updateResult, STATUS.OK); - } catch (error) { - return handleError('AppLog - Update', error); - } -} +// return response(updateResult, STATUS.OK); +// } catch (error) { +// return handleError('AppLog - Update', error); +// } +// } /** *************************************** @@ -72,7 +73,7 @@ export async function DELETE(req: NextRequest) { if (!appLogId) throw new Error('appLogId cannot null'); const id: number = parseInt(appLogId); - const deleteResult = await deleteAppLog(id); + const deleteResult = await deleteAppLog(id.toString()); return response(deleteResult, STATUS.OK); } catch (error) { diff --git a/03_source/cms_backend/src/app/api/event/search/route.ts b/03_source/cms_backend/src/app/api/event/search/route.ts index af5ccdf..b883235 100644 --- a/03_source/cms_backend/src/app/api/event/search/route.ts +++ b/03_source/cms_backend/src/app/api/event/search/route.ts @@ -7,29 +7,28 @@ import { _events } from 'src/_mock/_event'; // ---------------------------------------------------------------------- -export const runtime = 'edge'; +// export const runtime = 'edge'; /** ************************************** * GET - Search events *************************************** */ export async function GET(req: NextRequest) { - try { - const { searchParams } = req.nextUrl; - const query = searchParams.get('query')?.trim().toLowerCase(); + // try { + // + // TODO: implement search events + // + // const { searchParams } = req.nextUrl; + // const query = searchParams.get('query')?.trim().toLowerCase(); + // if (!query) { + // return response({ results: [] }, STATUS.OK); + // } + // const events = _events(); + // // Accept search by name or sku + // const results = events.filter(({ name, sku }) => name.toLowerCase().includes(query) || sku?.toLowerCase().includes(query)); + // logger('[Event] search-results', results.length); + // return response({ results }, STATUS.OK); - if (!query) { - return response({ results: [] }, STATUS.OK); - } - - const events = _events(); - - // Accept search by name or sku - const results = events.filter(({ name, sku }) => name.toLowerCase().includes(query) || sku?.toLowerCase().includes(query)); - - logger('[Event] search-results', results.length); - - return response({ results }, STATUS.OK); - } catch (error) { - return handleError('Event - Get search', error); - } + // } catch (error) { + return handleError('Event - Get search not implemented', {}); + // } } diff --git a/03_source/cms_backend/src/app/api/order/route.ts b/03_source/cms_backend/src/app/api/order/route.ts index 190381c..e146a28 100644 --- a/03_source/cms_backend/src/app/api/order/route.ts +++ b/03_source/cms_backend/src/app/api/order/route.ts @@ -28,7 +28,7 @@ export async function POST(req: NextRequest) { try { const order = await createOrder(data); - return response(order, STATUS.CREATED); + return response(order, STATUS.OK); } catch (error) { return handleError('Order - Create', error); } @@ -48,7 +48,7 @@ export async function PUT(req: NextRequest) { if (!orderId) throw new Error('orderId cannot be null'); const id: number = parseInt(orderId); - const updatedOrder = await updateOrder(id, data); + const updatedOrder = await updateOrder(id.toString(), data); return response(updatedOrder, STATUS.OK); } catch (error) { return handleError('Order - Update', error); @@ -68,7 +68,7 @@ export async function DELETE(req: NextRequest) { if (!orderId) throw new Error('orderId cannot be null'); const id: number = parseInt(orderId); - await deleteOrder(id); + await deleteOrder(id.toString()); return response({ success: true }, STATUS.OK); } catch (error) { return handleError('Order - Delete', error); diff --git a/03_source/cms_backend/src/app/api/product/route.ts b/03_source/cms_backend/src/app/api/product/route.ts index d30e80b..9a59fb3 100644 --- a/03_source/cms_backend/src/app/api/product/route.ts +++ b/03_source/cms_backend/src/app/api/product/route.ts @@ -24,13 +24,14 @@ export async function GET(req: NextRequest, res: NextResponse) { *************************************** */ export async function POST(req: NextRequest) { + const OPERATION = 'Product - Create'; const { data } = await req.json(); try { const product = await createProduct(data); - return response(product, STATUS.CREATED); + return response(OPERATION, STATUS.OK); } catch (error) { - return handleError('Product - Create', error); + return handleError(OPERATION, error); } } diff --git a/03_source/cms_backend/src/app/api/student/route.ts b/03_source/cms_backend/src/app/api/student/route.ts index fae88b9..44b655a 100644 --- a/03_source/cms_backend/src/app/api/student/route.ts +++ b/03_source/cms_backend/src/app/api/student/route.ts @@ -1,6 +1,7 @@ -import prisma from '@/lib/prisma'; import { NextResponse } from 'next/server'; +import prisma from 'src/app/lib/prisma'; + // GET: 获取所有学生 export async function GET() { try { diff --git a/03_source/cms_backend/src/app/api/user/checkAdmin/route.ts b/03_source/cms_backend/src/app/api/user/checkAdmin/route.ts index 85f2557..1e49d8b 100644 --- a/03_source/cms_backend/src/app/api/user/checkAdmin/route.ts +++ b/03_source/cms_backend/src/app/api/user/checkAdmin/route.ts @@ -14,8 +14,8 @@ export async function GET(req: NextRequest, res: NextResponse) { if (!userId) throw new Error('userId cannot be null'); const result = await isAdmin(userId); - return response(result, STATUS.OK); + return response(result ? 'true' : 'false', STATUS.OK); } catch (error) { - return handleError('Post - Get latest', error); + return handleError('GET - checkAdmin', error); } } diff --git a/03_source/cms_backend/src/app/api/user/helloworld/route.ts b/03_source/cms_backend/src/app/api/user/helloworld/route.ts index 85f2557..0a30567 100644 --- a/03_source/cms_backend/src/app/api/user/helloworld/route.ts +++ b/03_source/cms_backend/src/app/api/user/helloworld/route.ts @@ -14,8 +14,8 @@ export async function GET(req: NextRequest, res: NextResponse) { if (!userId) throw new Error('userId cannot be null'); const result = await isAdmin(userId); - return response(result, STATUS.OK); + return response('GET - helloworld', STATUS.OK); } catch (error) { - return handleError('Post - Get latest', error); + return handleError('GET - helloworld', error); } } diff --git a/03_source/cms_backend/src/app/api/user/route.ts b/03_source/cms_backend/src/app/api/user/route.ts index 9a151a0..cc88f52 100644 --- a/03_source/cms_backend/src/app/api/user/route.ts +++ b/03_source/cms_backend/src/app/api/user/route.ts @@ -22,14 +22,17 @@ export async function GET(req: NextRequest, res: NextResponse) { *************************************** */ export async function POST(req: NextRequest) { + const OPERATION = 'User - Create'; const { data } = await req.json(); try { - const createResult = await createNewUser(data); + // TODO: temporary ignore output from function due to `createNewUser` is still a dummy + // const createResult = await createNewUser(data); + await createNewUser(data); - return response(createResult, STATUS.OK); + return response(OPERATION, STATUS.OK); } catch (error) { - return handleError('User - Create', error); + return handleError(OPERATION, error); } } @@ -48,7 +51,7 @@ export async function PUT(req: NextRequest) { if (!userId) throw new Error('userId cannot null'); const id: number = parseInt(userId); - const updateResult = await updateUser(id, data); + const updateResult = await updateUser(id.toString(), data); return response(updateResult, STATUS.OK); } catch (error) { @@ -71,10 +74,10 @@ export async function DELETE(req: NextRequest) { if (!userId) throw new Error('userId cannot null'); const id: number = parseInt(userId); - const deleteResult = await deleteUser(id); + await deleteUser(id); - return response(deleteResult, STATUS.OK); + return response('User - Delete', STATUS.OK); } catch (error) { - return handleError('User - Update', error); + return handleError('User - Delete', error); } } diff --git a/03_source/cms_backend/src/app/services/AccessLog.service.ts b/03_source/cms_backend/src/app/services/AccessLog.service.ts index a936a9d..061ffb5 100644 --- a/03_source/cms_backend/src/app/services/AccessLog.service.ts +++ b/03_source/cms_backend/src/app/services/AccessLog.service.ts @@ -30,10 +30,15 @@ async function listAccessLogs(): Promise { }); } +// TODO: obsoleted getAccessLog, use getAccessLogById instead async function getAccessLog(id: string): Promise { return prisma.accessLog.findUnique({ where: { id } }); } +async function getAccessLogById(id: string): Promise { + return prisma.accessLog.findUnique({ where: { id } }); +} + async function createAccessLog(userId?: string, message?: string, metadata?: Record): Promise { return prisma.accessLog.create({ data: { @@ -44,6 +49,10 @@ async function createAccessLog(userId?: string, message?: string, metadata?: Rec }); } +function helloworld(): string { + return 'helloworld'; +} + // async function update(id: string, data: UpdateAccessLog): Promise { // return prisma.accessLog.update({ // where: { id }, @@ -63,4 +72,7 @@ export { getAccessLog, listAccessLogs, createAccessLog, + getAccessLogById, + // + helloworld, }; diff --git a/03_source/cms_backend/src/app/services/event.service.ts b/03_source/cms_backend/src/app/services/event.service.ts index 2ede8a7..7dc3a62 100644 --- a/03_source/cms_backend/src/app/services/event.service.ts +++ b/03_source/cms_backend/src/app/services/event.service.ts @@ -6,11 +6,14 @@ // RULES: // - Follows same pattern as helloworld.service.ts // +import type { Event } from '@prisma/client'; + +import prisma from '../lib/prisma'; type CreateEvent = { - eventDate: DateTime; + eventDate: Date; title: string; - joinMembers?: Json[]; + joinMembers?: JSON[]; price: number; currency: string; duration_m: number; @@ -22,9 +25,9 @@ type CreateEvent = { }; type UpdateEvent = { - eventDate?: DateTime; + eventDate?: Date; title?: string; - joinMembers?: Json[]; + joinMembers?: JSON[]; price?: number; currency?: string; duration_m?: number; @@ -35,9 +38,9 @@ type UpdateEvent = { memberId?: number; }; -// async function listEvents(): Promise { -// return prisma.event.findMany(); -// } +async function listEvents(): Promise { + return prisma.event.findMany(); +} // async function getEvent(eventId: number) { // return prisma.event.findFirst({ where: { id: eventId } }); diff --git a/03_source/cms_backend/src/app/services/eventItem.service.ts b/03_source/cms_backend/src/app/services/eventItem.service.ts index 9476612..cf87b36 100644 --- a/03_source/cms_backend/src/app/services/eventItem.service.ts +++ b/03_source/cms_backend/src/app/services/eventItem.service.ts @@ -12,9 +12,9 @@ import type { EventItem } from '@prisma/client'; import prisma from '../lib/prisma'; type CreateEvent = { - eventDate: DateTime; + eventDate: Date; title: string; - joinMembers?: Json[]; + joinMembers?: JSON[]; price: number; currency: string; duration_m: number; @@ -26,9 +26,9 @@ type CreateEvent = { }; type UpdateEvent = { - eventDate?: DateTime; + eventDate?: Date; title?: string; - joinMembers?: Json[]; + joinMembers?: JSON[]; price?: number; currency?: string; duration_m?: number; diff --git a/03_source/cms_backend/src/app/services/order.service.ts b/03_source/cms_backend/src/app/services/order.service.ts index 2d8c9f6..50a72a8 100644 --- a/03_source/cms_backend/src/app/services/order.service.ts +++ b/03_source/cms_backend/src/app/services/order.service.ts @@ -11,9 +11,24 @@ import type { OrderItem } from '@prisma/client'; import prisma from '../lib/prisma'; type CreateOrderItem = { - orderNumber?: string; + // orderNumber?: string; // status?: string; // eventIds?: number[]; + + taxes: number; + status: string; + shipping: number; + discount: number; + subtotal: number; + orderNumber: string; + totalAmount: number; + totalQuantity: number; + history: Record; + payment: Record; + customer: Record; + delivery: Record; + items: Record[]; + shippingAddress: Record; }; type UpdateOrderItem = { diff --git a/03_source/cms_backend/src/app/services/userItem.service.ts b/03_source/cms_backend/src/app/services/userItem.service.ts index 95c7c0e..1488871 100644 --- a/03_source/cms_backend/src/app/services/userItem.service.ts +++ b/03_source/cms_backend/src/app/services/userItem.service.ts @@ -38,7 +38,7 @@ async function getUserItem(userId: string): Promise { return prisma.userItem.findFirst({ where: { id: userId } }); } -async function updateUser(userId: string, updateForm: UpdateUser): Promise { +async function updateUser(userId: string, updateForm: UpdateUser): Promise { return prisma.userItem.update({ where: { id: userId }, data: updateForm, @@ -82,7 +82,7 @@ async function changeToUser(userIdToPromote: string, userIdOfApplicant: string) return promoteResult; } -async function getUserById1(id: string): Promise { +async function getUserById(id: string): Promise { return prisma.userItem.findFirst({ where: { id } }); } diff --git a/03_source/cms_backend/tsconfig.json b/03_source/cms_backend/tsconfig.json index 18bfd6a..c5b64de 100644 --- a/03_source/cms_backend/tsconfig.json +++ b/03_source/cms_backend/tsconfig.json @@ -43,7 +43,8 @@ "**/*.draft", "**/*.log", "**/*.tmp", - "**/*del" + "**/*del", + "prisma/*" ], "include": [ "next-env.d.ts", diff --git a/03_source/cms_backend/yarn.lock b/03_source/cms_backend/yarn.lock index ac0c661..c4f2302 100644 --- a/03_source/cms_backend/yarn.lock +++ b/03_source/cms_backend/yarn.lock @@ -770,6 +770,13 @@ dependencies: tslib "^2.4.0" +"@types/bcrypt@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/bcrypt/-/bcrypt-5.0.2.tgz#22fddc11945ea4fbc3655b3e8b8847cc9f811477" + integrity sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ== + dependencies: + "@types/node" "*" + "@types/estree@^1.0.6": version "1.0.7" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz" @@ -790,6 +797,13 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.17.tgz#fb85a04f47e9e4da888384feead0de05f7070355" integrity sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ== +"@types/node@*": + version "24.0.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.0.1.tgz#e9bfcb1c35547437c294403b7bec497772a88b0a" + integrity sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw== + dependencies: + undici-types "~7.8.0" + "@types/node@^22.13.13": version "22.13.13" resolved "https://registry.npmjs.org/@types/node/-/node-22.13.13.tgz" @@ -3486,6 +3500,11 @@ undici-types@~6.20.0: resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz" integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== +undici-types@~7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" + integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== + unique-names-generator@^4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/unique-names-generator/-/unique-names-generator-4.7.1.tgz#966407b12ba97f618928f77322cfac8c80df5597"