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

package types

type CreateOrderReq struct {
	PlayerId  int64  `json:"playerId,string"`
	ShopId    int64  `json:"shopId,string,optional"`
	ServiceId int64  `json:"serviceId,string"`
	Quantity  int    `json:"quantity"`
	Note      string `json:"note,optional"`
}

type CreateOrderResp struct {
	Ok    bool  `json:"ok"`
	Order Order `json:"order"`
}

type EmptyResp struct {
}

type Order struct {
	Id          int64         `json:"id,string"`
	ConsumerId  int64         `json:"consumerId,string"`
	PlayerId    string        `json:"playerId"`
	ShopId      int64         `json:"shopId,string,optional"`
	Service     PlayerService `json:"service"`
	Status      string        `json:"status"`
	TotalPrice  float64       `json:"totalPrice"`
	Note        string        `json:"note,optional"`
	CreatedAt   string        `json:"createdAt"`
	AcceptedAt  string        `json:"acceptedAt,optional"`
	CompletedAt string        `json:"completedAt,optional"`
}

type OrderListReq struct {
	PageReq
	Role   string `form:"role"` // consumer, player, owner
	Status string `form:"status,optional"`
}

type OrderListResp struct {
	Items []Order  `json:"items"`
	Meta  PageMeta `json:"meta"`
}

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 PathId struct {
	Id int64 `path:"id"`
}

type PlayerService struct {
	Id           int64    `json:"id,string"`
	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 SimpleUser struct {
	Id       string `json:"id"`
	Nickname string `json:"nickname"`
	Avatar   string `json:"avatar"`
}

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"`
}
