chore: update Node version and enhance debugging capabilities

- Removed .nvmrc file to eliminate version locking.
- Updated Dockerfile to use Node 22.6.0-alpine for improved performance and security.
- Modified package.json to enhance the 'start:dev' script with debugging options.
- Added new launch configuration in VSCode for attaching to Node processes by PID.
- Cleaned up settings.json by removing unused configurations.
- Refactored main.ts to simplify the bootstrap process.
- Enhanced logging in OrderSchema and ScheduleSchema for better traceability of operations.
This commit is contained in:
2024-12-03 22:46:23 +07:00
parent 951d61f3ac
commit a516dce800
8 changed files with 27 additions and 16 deletions

1
.nvmrc
View File

@@ -1 +0,0 @@
22.11.0

22
.vscode/launch.json vendored
View File

@@ -4,14 +4,28 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{
"name": "Attach by Process ID",
"processId": "${command:PickProcess}",
"request": "attach",
"skipFiles": [
"<node_internals>/**"
],
"type": "node"
},
{ {
"type": "node", "type": "node",
"request": "launch", "request": "launch",
"name": "Launch Program", "name": "Launch Program",
"runtimeExecutable": "C:\\Users\\AliensVN\\AppData\\Roaming\\fnm\\node-versions\\v20.17.0\\installation\\node.exe", "runtimeExecutable": "C:\\Users\\AliensVN\\AppData\\Roaming\\fnm\\node-versions\\v22.6.0\\installation\\node.exe",
"skipFiles": ["<node_internals>/**"], "skipFiles": [
"<node_internals>/**"
],
"cwd": "${workspaceFolder}",
"program": "${file}", "program": "${file}",
"outFiles": ["${workspaceFolder}/**/*.js"] "outFiles": [
"${workspaceFolder}/**/*.js"
]
} }
] ]
} }

View File

@@ -1,6 +1,4 @@
{ {
"dependi.npm.lockFileEnabled": false,
"typescript.tsdk": "node_modules\\typescript\\lib", "typescript.tsdk": "node_modules\\typescript\\lib",
"compile-hero.disable-compile-files-on-did-save-code": true,
"docwriter.style": "JSDoc" "docwriter.style": "JSDoc"
} }

View File

@@ -1,4 +1,4 @@
FROM node:alpine AS node_base FROM node:22.6.0-alpine AS node_base
# Set the working directory # Set the working directory
WORKDIR /app WORKDIR /app

View File

@@ -9,7 +9,7 @@
"build": "nest build", "build": "nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start", "start": "nest start",
"start:dev": "nest start --watch", "start:dev": "nest start --watch --inspect --debug",
"start:debug": "nest start --debug --watch", "start:debug": "nest start --debug --watch",
"start:prod": "node dist/main", "start:prod": "node dist/main",
"prisma:generate": "npx prisma generate --schema=./epess-database/prisma/schema.prisma", "prisma:generate": "npx prisma generate --schema=./epess-database/prisma/schema.prisma",

View File

@@ -1,4 +1,4 @@
import { Inject, Injectable } from '@nestjs/common' import { Inject, Injectable, Logger } from '@nestjs/common'
import { Pothos, PothosRef, PothosSchema, SchemaBuilderToken } from '@smatch-corp/nestjs-pothos' import { Pothos, PothosRef, PothosSchema, SchemaBuilderToken } from '@smatch-corp/nestjs-pothos'
import { Builder } from '../Graphql/graphql.builder' import { Builder } from '../Graphql/graphql.builder'
import { PrismaService } from '../Prisma/prisma.service' import { PrismaService } from '../Prisma/prisma.service'
@@ -201,8 +201,8 @@ export class OrderSchema extends PothosSchema {
expiredAt: DateTimeUtils.now().plus({ minutes: 15 }).toJSDate(), expiredAt: DateTimeUtils.now().plus({ minutes: 15 }).toJSDate(),
}, },
}) })
const _name = _.deburr(service.name).slice(0, 10)
const _name = _.map(_.slice(_.split(service.name, ' '), 0, 10), (word) => _.deburr(word)).join(' ') Logger.log(`Creating payment for ${_name}`)
// generate payment url // generate payment url
const paymentData = await this.payosService.createPayment({ const paymentData = await this.payosService.createPayment({
orderCode: paymentCode, orderCode: paymentCode,

View File

@@ -262,6 +262,7 @@ export class ScheduleSchema extends PothosSchema {
if (!ctx.http?.me?.id) { if (!ctx.http?.me?.id) {
throw new Error('User not found') throw new Error('User not found')
} }
Logger.log(`ctx.http.me.role: ${ctx.http.me.role}`)
// use case 1: customer query schedules where customer is participant // use case 1: customer query schedules where customer is participant
if (ctx.http.me.role === Role.CUSTOMER) { if (ctx.http.me.role === Role.CUSTOMER) {
const schedules = await this.prisma.schedule.findMany({ const schedules = await this.prisma.schedule.findMany({
@@ -286,6 +287,7 @@ export class ScheduleSchema extends PothosSchema {
if (!center) { if (!center) {
throw new Error('Center not found') throw new Error('Center not found')
} }
// get all schedules belong to center
const schedules = await this.prisma.schedule.findMany({ const schedules = await this.prisma.schedule.findMany({
...query, ...query,
skip: args.skip ?? undefined, skip: args.skip ?? undefined,

View File

@@ -82,7 +82,5 @@ async function bootstrap() {
Logger.log(`Server is running on http://${host}:${port}`, 'Bootstrap') Logger.log(`Server is running on http://${host}:${port}`, 'Bootstrap')
}) })
} }
// IIFE
;(async () => { bootstrap()
await bootstrap()
})()