type CreateCourseResourceReq { CourseId int `json:"course_id" form:"course_id" validate:"required"` Title string `json:"title" form:"title" validate:"required,max=255"` ResourceUrl string `json:"resource_url" form:"resource_url" validate:"required,max=512"` Size int `json:"size" form:"size" validate:"omitempty,min=0"` Sort int `json:"sort" form:"sort" validate:"omitempty,min=0"` } type CreateCourseResourceResp { Id int `json:"id"` Message string `json:"message"` } type GetCourseResourceReq { Id int `path:"id" validate:"required"` } type GetCourseResourceResp { Id int `json:"id"` CourseId int `json:"course_id"` Title string `json:"title"` ResourceUrl string `json:"resource_url"` Size int `json:"size"` Sort int `json:"sort"` } type ListCourseResourceReq { CourseId int `form:"course_id" validate:"omitempty"` Page int `form:"page" validate:"required,min=1"` PageSize int `form:"page_size" validate:"required,min=1,max=100"` } type ListCourseResourceResp { Total int `json:"total"` List []GetCourseResourceResp `json:"list"` Page int `json:"page"` PageSize int `json:"page_size"` } type UpdateCourseResourceReq { Id int `json:"id" validate:"required"` CourseId int `json:"course_id" validate:"omitempty"` Title string `json:"title" validate:"omitempty,max=255"` ResourceUrl string `json:"resource_url" validate:"omitempty,max=512"` Size int `json:"size" validate:"omitempty,min=0"` Sort int `json:"sort" validate:"omitempty,min=0"` } type UpdateCourseResourceResp { Message string `json:"message"` } type DeleteCourseResourceReq { Id int `path:"id" validate:"required"` } type DeleteCourseResourceResp { Message string `json:"message"` } @server ( group: course_resource prefix: /api/course-resource ) service course_resource_api { @handler CreateCourseResourceHandler post / (CreateCourseResourceReq) returns (CreateCourseResourceResp) @handler GetCourseResourceHandler get /:id (GetCourseResourceReq) returns (GetCourseResourceResp) @handler ListCourseResourceHandler post /list (ListCourseResourceReq) returns (ListCourseResourceResp) @handler UpdateCourseResourceHandler put / (UpdateCourseResourceReq) returns (UpdateCourseResourceResp) @handler DeleteCourseResourceHandler delete /:id (DeleteCourseResourceReq) returns (DeleteCourseResourceResp) }