82 lines
1.7 KiB
Plaintext
82 lines
1.7 KiB
Plaintext
syntax = "v1"
|
|
|
|
import "common.api"
|
|
|
|
type (
|
|
PathIDReq {
|
|
Id int64 `path:"id"`
|
|
}
|
|
SearchReq {
|
|
PageReq
|
|
Q string `form:"q,optional"`
|
|
MinPrice float64 `form:"min,optional"`
|
|
MaxPrice float64 `form:"max,optional"`
|
|
OnlyOnline bool `form:"onlyOnline,optional"`
|
|
Sort string `form:"sort,optional"`
|
|
}
|
|
SearchResp {
|
|
Items []interface{} `json:"items"` // Mixed items
|
|
Meta PageMeta `json:"meta"`
|
|
}
|
|
Favorite {
|
|
Id string `json:"id"`
|
|
UserId string `json:"userId"`
|
|
TargetType string `json:"targetType"`
|
|
TargetId string `json:"targetId"`
|
|
CreatedAt string `json:"createdAt"`
|
|
}
|
|
FavoriteListResp {
|
|
Items []Favorite `json:"items"`
|
|
Meta PageMeta `json:"meta"`
|
|
}
|
|
FavoriteReq {
|
|
TargetType string `json:"targetType"` // player, shop
|
|
TargetId string `json:"targetId"`
|
|
}
|
|
FavoriteCheckReq {
|
|
PathIDReq
|
|
TargetType string `form:"targetType"`
|
|
TargetId string `form:"targetId"`
|
|
}
|
|
FavoriteCheckResp {
|
|
Favorited bool `json:"favorited"`
|
|
}
|
|
)
|
|
|
|
@server (
|
|
prefix: api/v1
|
|
group: search
|
|
)
|
|
service search-api {
|
|
@doc "统一搜索"
|
|
@handler Search
|
|
get /search (SearchReq) returns (SearchResp)
|
|
|
|
@doc "首页推荐"
|
|
@handler Recommendations
|
|
get /recommendations/home (PageReq) returns (SearchResp)
|
|
}
|
|
|
|
@server (
|
|
prefix: api/v1
|
|
group: favorites
|
|
)
|
|
service search-api {
|
|
@doc "获取收藏列表"
|
|
@handler ListFavorites
|
|
get /favorites (PageReq) returns (FavoriteListResp)
|
|
|
|
@doc "添加收藏"
|
|
@handler AddFavorite
|
|
post /favorites (FavoriteReq) returns (EmptyResp)
|
|
|
|
@doc "取消收藏"
|
|
@handler RemoveFavorite
|
|
delete /favorites/:id (PathIDReq) returns (EmptyResp)
|
|
|
|
@doc "检查收藏状态"
|
|
@handler CheckFavorite
|
|
get /users/:id/favorites/check (FavoriteCheckReq) returns (FavoriteCheckResp)
|
|
}
|
|
|