Files
juwan-backend/desc/api/search.api
zetaloop dd3cd24b70 Merge branch 'main-merge-base-a'
# Conflicts:
#	deploy/dev/docker-compose.yml
#	deploy/dev/envoy.yaml
#	desc/api/dispute.api
#	desc/api/review.api
#	desc/api/search.api
2026-04-25 05:42:42 +08:00

81 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)
}