// Code generated by goctl. DO NOT EDIT.
// goctl 1.10.1

package types

type CreateServiceReq struct {
	GameId       int64    `json:"gameId,string,optional"`
	Title        string   `json:"title,optional"`
	Description  string   `json:"description,optional"`
	Price        float64  `json:"price"`
	Unit         string   `json:"unit"`
	RankRange    string   `json:"rankRange,optional"`
	Availability []string `json:"availability,optional"`
}

type DeleteServiceReq struct {
	Id int64 `path:"id"`
}

type EmptyResp struct {
}

type GetPlayerReq struct {
	Id int64 `path:"id"`
}

type GetServiceReq struct {
	Id int64 `path:"id"`
}

type ListPlayerServicesReq struct {
	PageReq
	Id int64 `path:"id"`
}

type PageMeta struct {
	Total  int64 `json:"total"`
	Offset int64 `json:"offset"`
	Limit  int64 `json:"limit"`
}

type PageReq struct {
	Offset int64 `form:"offset,default=0"`
	Limit  int64 `form:"limit,default=20"`
}

type PlayerListReq struct {
	PageReq
	GameId int64 `form:"gameId,optional"`
	Gender int64 `form:"gender,optional"`
}

type PlayerListResp struct {
	Items []PlayerProfile `json:"items"`
	Meta  PageMeta        `json:"meta"`
}

type PlayerProfile struct {
	Id             int64           `json:"id,string"`
	User           UserProfile     `json:"user"`
	Rating         float64         `json:"rating"`
	TotalOrders    int64           `json:"totalOrders"`
	CompletionRate float64         `json:"completionRate"`
	Status         string          `json:"status"`
	Games          []string        `json:"games"`
	Services       []PlayerService `json:"services"`
	ShopId         string          `json:"shopId,optional"`
	ShopName       string          `json:"shopName,optional"`
	Gender         bool            `json:"gender"`
	Tags           []string        `json:"tags"`
}

type PlayerService struct {
	Id           int64    `json:"id,string,optional"`
	PlayerId     int64    `json:"playerId,string"`
	GameId       int64    `json:"gameId,string"`
	GameName     string   `json:"gameName"`
	Title        string   `json:"title"`
	Description  string   `json:"description"`
	Price        float64  `json:"price"`
	Unit         string   `json:"unit"`
	RankRange    string   `json:"rankRange,optional"`
	Availability []string `json:"availability"`
}

type PlayerServiceListResp struct {
	Items []PlayerService `json:"items"`
	Meta  PageMeta        `json:"meta"`
}

type SimpleUser struct {
	Id       string `json:"id"`
	Nickname string `json:"nickname"`
	Avatar   string `json:"avatar"`
}

type UpdatePlayerStatusReq struct {
	Status string `json:"status"`
}

type UpdateServiceReq struct {
	Id           int64    `path:"id"`
	GameId       *int64   `json:"gameId,string,optional"`
	Title        *string  `json:"title,optional"`
	Description  *string  `json:"description,optional"`
	Price        *float64 `json:"price,optional"`
	Unit         *string  `json:"unit,optional"`
	RankRange    *string  `json:"rankRange,optional"`
	Availability []string `json:"availability"`
}

type UserProfile struct {
	Id                 string            `json:"id"`
	Username           string            `json:"username"`
	Nickname           string            `json:"nickname"`
	Avatar             string            `json:"avatar"`
	Role               string            `json:"role"` // consumer, player, owner, admin
	VerifiedRoles      []string          `json:"verifiedRoles"`
	VerificationStatus map[string]string `json:"verificationStatus"`
	Phone              string            `json:"phone,optional"`
	Bio                string            `json:"bio,optional"`
	CreatedAt          string            `json:"createdAt"`
}
