Demo

Controller / Router

@Controller၊ route/method decorator၊ parameter decorator နှင့် @APIInfo ဖြင့် HTTP API များကို ရေးသားရပါသည်။ တုံ့ပြန်ချက်များကို ResponseDto ပုံစံဖြင့် အမြဲ ပြန်ပေးရပါသည်။

@Controller

@Controller(path) က အခြေခံ route ကို သတ်မှတ်ပါသည်။ Plugin အမည်ကို အလိုအလျောက် prefix အဖြစ် ထည့်ပေးပါသည် (ဥပမာ /reward-point → /<plugin>/reward-point)။

TSXcontroller
1import { 2 AuthenticatedUserOnly, 3 CheckAPIPermission, 4 Controller, 5 Get, 6 ResponseDto, 7} from "@quan-erp/shared-backend-core"; 8 9@Controller("/reward-point") 10export class RewardPointController { 11 @Get("/") 12 @AuthenticatedUserOnly() 13 @CheckAPIPermission() 14 async list() { 15 return ResponseDto.ok(/* … */); 16 } 17}

HTTP methods

  • @Get / @Post / @Put / @Delete — path သည် "/" ဖြင့် စရပါသည်
  • လိုအပ်သလို security၊ @APIInfo၊ caching နှင့် workflow decorator များနှင့် ပေါင်းစပ်အသုံးပြုနိုင်ပါသည်

Route parameters

  • @Param(name) — path parameter
  • @Query(name) — query parameter
  • @Body() — များသောအားဖြင့် RequestDto<T>
  • @User() — RequestedUser
TSXparams
1import { 2 Body, 3 Controller, 4 Param, 5 Put, 6 RequestDto, 7 RequestedUser, 8 User, 9} from "@quan-erp/shared-backend-core"; 10import type { UpdateDto } from "./update.dto.js"; 11 12@Controller("/order") 13export class OrderController { 14 @Put("/:id") 15 async update( 16 @Param("id") id: number, 17 @Body() body: RequestDto<UpdateDto>, 18 @User() user: RequestedUser, 19 ) { /* … */ } 20}

@APIInfo

Doc နှင့် စနစ်ချိတ်ဆက်မှုအတွက် metadata ကို ပေးရပါသည် — shortDescription၊ description၊ isPublic၊ contentType၊ requestDto၊ responseDto၊ queryParams၊ pathParams၊ headers တို့ ပါဝင်နိုင်ပါသည်။

TSXapi-info
1import { 2 APIInfo, 3 Controller, 4 Get, 5 JsonContentType, 6 JWTAuthorizationHeader, 7 ResponseDto, 8 SkipLimitQueryParam, 9} from "@quan-erp/shared-backend-core"; 10 11@Controller("/branch") 12export class BranchController { 13 @Get("/") 14 @APIInfo({ 15 shortDescription: "Get all branches", 16 contentType: JsonContentType, 17 responseDto: ResponseDto, 18 queryParams: SkipLimitQueryParam, 19 headers: JWTAuthorizationHeader, 20 }) 21 async list() { /* … */ } 22}

Request နှင့် response DTO များ

Payload များကို RequestDto / ResponseDto ဖြင့် wrap လုပ်ရပါသည် — frontend က payload၊ errors၊ meta ပုံစံကို တူညီစွာ ရရှိစေရန်ဖြစ်ပါသည်။

Service CRUD ပုံစံများ

  • Create — repo.insert(...) ပြီး identifiers မှ { id } ပြန်ပေးရပါသည် (ထည့်ပြီးမှ findOne မလုပ်ရပါ)
  • Update — repo.update({ id }, { ...data, updateDate }) ပြုလုပ်ပြီး affected ကို စစ်ဆေးရပါသည်
  • Delete — repo.softDelete ပြုလုပ်ပြီး affected ကို စစ်ဆေးရပါသည်