@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 ကို စစ်ဆေးရပါသည်