feat: complete API-driven projects with infrastructure and business acceptance

This commit is contained in:
2026-09-23 17:33:50 +08:00
parent 04a1f7999d
commit 2c74dc0859
137 changed files with 11926 additions and 105 deletions

View File

@@ -0,0 +1,60 @@
syntax = "v1"
info (
title: "User service reference"
version: "1.0.0"
)
type (
UserResp {
ID int64 `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
CreatedAt string `json:"createdAt"`
UpdatedAt string `json:"updatedAt"`
}
CreateUserReq {
Name string `json:"name" binding:"required,max=100"`
Email string `json:"email" binding:"required,email,max=254"`
}
UserIDReq {
ID int64 `path:"id,range=[1:9007199254740991]"`
}
UpdateUserReq {
ID int64 `path:"id,range=[1:9007199254740991]"`
Name string `json:"name" binding:"required,max=100"`
Email string `json:"email" binding:"required,email,max=254"`
}
ListUsersReq {
Page int `form:"page,default=1,range=[1:1000000]"`
PageSize int `form:"pageSize,default=20,range=[1:100]"`
}
UserPageResp {
Items []UserResp `json:"items"`
Total int `json:"total"`
Page int `json:"page"`
PageSize int `json:"pageSize"`
}
ExportResp {
DownloadURL string `json:"downloadUrl"`
}
)
@server (
group: user
prefix: /api/v1
middleware: Auth
)
service user-api {
@handler createUser
@status 201
post /users (CreateUserReq) returns (UserResp)
@handler getUser
get /users/:id (UserIDReq) returns (UserResp)
@handler listUsers
get /users (ListUsersReq) returns (UserPageResp)
@handler updateUser
put /users/:id (UpdateUserReq) returns (UserResp)
@handler deleteUser
delete /users/:id (UserIDReq)
@doc "Export one user as a private text object with a short-lived download link"
@handler exportUser
post /users/:id/export (UserIDReq) returns (ExportResp)
}