test: command api

This commit is contained in:
IliaDenisov
2026-02-11 20:00:32 +03:00
parent 751214e5d0
commit 7c4e2a6f88
5 changed files with 865 additions and 52 deletions
+2 -2
View File
@@ -9,8 +9,8 @@ import (
type Relation string
const (
RelationWar Relation = "War"
RelationPeace Relation = "Peace"
RelationWar Relation = "WAR"
RelationPeace Relation = "PEACE"
)
var (
+16 -16
View File
@@ -3,7 +3,7 @@ package rest
import "encoding/json"
type Command struct {
Actor string `json:"actor" binding:"required,notblank"`
Actor string `json:"actor" binding:"notblank"`
Commands []json.RawMessage `json:"cmd" binding:"min=1"`
}
@@ -40,7 +40,7 @@ type DecodableCommand interface {
}
type CommandMeta struct {
Type CommandType `json:"@type" binding:"required,notblank"`
Type CommandType `json:"@type" binding:"notblank"`
}
func (cm CommandMeta) CommandType() CommandType {
@@ -53,18 +53,18 @@ type CommandRaceQuit struct {
type CommandRaceVote struct {
CommandMeta
Acceptor string `json:"acceptor" binding:"required,notblank"`
Acceptor string `json:"acceptor" binding:"notblank,entity"`
}
type CommandRaceRelation struct {
CommandMeta
Acceptor string `json:"acceptor" binding:"required,notblank"`
Relation string `json:"relation" binding:"required,notblank"`
Acceptor string `json:"acceptor" binding:"notblank,entity"`
Relation string `json:"relation" binding:"oneof=WAR PEACE"`
}
type CommandShipClassCreate struct {
CommandMeta
Name string `json:"name" binding:"required,notblank,entity"`
Name string `json:"name" binding:"notblank,entity"`
Drive float64 `json:"drive" binding:"eq=0|gte=1"`
Armament int `json:"armament" binding:"ammoWeapons=Weapons"`
Weapons float64 `json:"weapons" binding:"ammoWeapons=Armament"`
@@ -74,8 +74,8 @@ type CommandShipClassCreate struct {
type CommandShipClassMerge struct {
CommandMeta
Name string `json:"name" binding:"required,notblank,entity,nefield=Target"`
Target string `json:"target" binding:"required,notblank,entity,nefield=Class"`
Name string `json:"name" binding:"notblank,entity,nefield=Target"`
Target string `json:"target" binding:"notblank,entity,nefield=Name"`
}
type CommandShipClassRemove struct {
@@ -86,7 +86,7 @@ type CommandShipClassRemove struct {
type CommandShipGroupLoad struct {
CommandMeta
ID string `json:"id" binding:"required,uuid_rfc4122"`
Cargo string `json:"cargo" binding:"required,notblank,oneof=COL MAT CAP"`
Cargo string `json:"cargo" binding:"oneof=COL MAT CAP"`
Quantity float64 `json:"quantity" binding:"gte=0"`
}
@@ -106,7 +106,7 @@ type CommandShipGroupUpgrade struct {
CommandMeta
ID string `json:"id" binding:"required,uuid_rfc4122"`
Tech string `json:"tech" binding:"oneof=ALL DRIVE WEAPONS SHIELDS CARGO"`
Level float64 `json:"level" binding:"gte=1"`
Level float64 `json:"level" binding:"eq=0|gt=1"`
}
type CommandShipGroupMerge struct {
@@ -115,8 +115,8 @@ type CommandShipGroupMerge struct {
type CommandShipGroupBreak struct {
CommandMeta
ID string `json:"id" binding:"required,uuid_rfc4122"`
NewID string `json:"newId" binding:"required,uuid_rfc4122"`
ID string `json:"id" binding:"uuid_rfc4122,nefield=NewID"`
NewID string `json:"newId" binding:"uuid_rfc4122,nefield=ID"`
Quantity int `json:"quantity" binding:"gte=0"`
}
@@ -128,7 +128,7 @@ type CommandShipGroupDismantle struct {
type CommandShipGroupTransfer struct {
CommandMeta
ID string `json:"id" binding:"required,uuid_rfc4122"`
Acceptor string `json:"acceptor" binding:"required,notblank"`
Acceptor string `json:"acceptor" binding:"required,notblank,entity"`
}
type CommandShipGroupJoinFleet struct {
@@ -173,18 +173,18 @@ type CommandPlanetProduce struct {
CommandMeta
Number int `json:"planetNumber" binding:"gte=0"`
Production string `json:"production" binding:"oneof=MAT CAP DRIVE WEAPONS SHIELDS CARGO SCIENCE SHIP"`
Subject string `json:"subject" binding:"subject"`
Subject string `json:"subject" binding:"subject=Production"`
}
type CommandPlanetRouteSet struct {
CommandMeta
Origin int `json:"fromPlanetNumber" binding:"gte=0,nefield=Destination"`
Destination int `json:"toPlanetNumber" binding:"gte=0,nefield=Number"`
Destination int `json:"toPlanetNumber" binding:"gte=0,nefield=Origin"`
LoadType string `json:"loadType" binding:"oneof=MAT CAP COL EMP"`
}
type CommandPlanetRouteRemove struct {
CommandMeta
Origin int `json:"fromPlanetNumber" binding:"gte=0,nefield=Destination"`
Origin int `json:"fromPlanetNumber" binding:"gte=0"`
LoadType string `json:"loadType" binding:"oneof=MAT CAP COL EMP"`
}