2024-01-02 09:54:11 +00:00
|
|
|
package domain
|
|
|
|
|
|
|
|
import (
|
|
|
|
"math"
|
|
|
|
"net/url"
|
|
|
|
)
|
|
|
|
|
|
|
|
type BaseVillage struct {
|
|
|
|
id int
|
|
|
|
name string
|
|
|
|
points int
|
|
|
|
x int
|
|
|
|
y int
|
|
|
|
continent string
|
|
|
|
bonus int
|
|
|
|
playerID int
|
|
|
|
profileURL *url.URL
|
|
|
|
}
|
|
|
|
|
|
|
|
const baseVillageModelName = "BaseVillage"
|
|
|
|
|
|
|
|
func NewBaseVillage(
|
|
|
|
id int,
|
|
|
|
name string,
|
|
|
|
points int,
|
|
|
|
x, y int,
|
|
|
|
continent string,
|
|
|
|
bonus int,
|
|
|
|
playerID int,
|
|
|
|
profileURL *url.URL,
|
|
|
|
) (BaseVillage, error) {
|
|
|
|
if err := validateIntInRange(id, 1, math.MaxInt); err != nil {
|
|
|
|
return BaseVillage{}, ValidationError{
|
|
|
|
Model: baseVillageModelName,
|
|
|
|
Field: "id",
|
|
|
|
Err: err,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := validateStringLen(name, villageNameMinLength, villageNameMaxLength); err != nil {
|
|
|
|
return BaseVillage{}, ValidationError{
|
|
|
|
Model: baseVillageModelName,
|
|
|
|
Field: "name",
|
|
|
|
Err: err,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-01-04 10:44:36 +00:00
|
|
|
if err := validateIntInRange(points, 0, math.MaxInt); err != nil {
|
2024-01-02 09:54:11 +00:00
|
|
|
return BaseVillage{}, ValidationError{
|
|
|
|
Model: baseVillageModelName,
|
|
|
|
Field: "points",
|
|
|
|
Err: err,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := validateIntInRange(x, 0, math.MaxInt); err != nil {
|
|
|
|
return BaseVillage{}, ValidationError{
|
|
|
|
Model: baseVillageModelName,
|
|
|
|
Field: "x",
|
|
|
|
Err: err,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := validateIntInRange(y, 0, math.MaxInt); err != nil {
|
|
|
|
return BaseVillage{}, ValidationError{
|
|
|
|
Model: baseVillageModelName,
|
|
|
|
Field: "y",
|
|
|
|
Err: err,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := validateStringLen(continent, villageContinentMinLength, villageContinentMaxLength); err != nil {
|
|
|
|
return BaseVillage{}, ValidationError{
|
|
|
|
Model: baseVillageModelName,
|
|
|
|
Field: "continent",
|
|
|
|
Err: err,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := validateIntInRange(bonus, 0, math.MaxInt); err != nil {
|
|
|
|
return BaseVillage{}, ValidationError{
|
|
|
|
Model: baseVillageModelName,
|
|
|
|
Field: "bonus",
|
|
|
|
Err: err,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := validateIntInRange(playerID, 0, math.MaxInt); err != nil {
|
|
|
|
return BaseVillage{}, ValidationError{
|
|
|
|
Model: baseVillageModelName,
|
|
|
|
Field: "playerID",
|
|
|
|
Err: err,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if profileURL == nil {
|
|
|
|
return BaseVillage{}, ValidationError{
|
|
|
|
Model: baseVillageModelName,
|
|
|
|
Field: "profileURL",
|
|
|
|
Err: ErrNil,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return BaseVillage{
|
|
|
|
id: id,
|
|
|
|
name: name,
|
|
|
|
points: points,
|
|
|
|
x: x,
|
|
|
|
y: y,
|
|
|
|
continent: continent,
|
|
|
|
bonus: bonus,
|
|
|
|
playerID: playerID,
|
|
|
|
profileURL: profileURL,
|
|
|
|
}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (v BaseVillage) ID() int {
|
|
|
|
return v.id
|
|
|
|
}
|
|
|
|
|
|
|
|
func (v BaseVillage) Name() string {
|
|
|
|
return v.name
|
|
|
|
}
|
|
|
|
|
|
|
|
func (v BaseVillage) Points() int {
|
|
|
|
return v.points
|
|
|
|
}
|
|
|
|
|
|
|
|
func (v BaseVillage) X() int {
|
|
|
|
return v.x
|
|
|
|
}
|
|
|
|
|
|
|
|
func (v BaseVillage) Y() int {
|
|
|
|
return v.y
|
|
|
|
}
|
|
|
|
|
|
|
|
func (v BaseVillage) Continent() string {
|
|
|
|
return v.continent
|
|
|
|
}
|
|
|
|
|
|
|
|
func (v BaseVillage) Bonus() int {
|
|
|
|
return v.bonus
|
|
|
|
}
|
|
|
|
|
|
|
|
func (v BaseVillage) PlayerID() int {
|
|
|
|
return v.playerID
|
|
|
|
}
|
|
|
|
|
|
|
|
func (v BaseVillage) ProfileURL() *url.URL {
|
2024-03-11 07:37:04 +00:00
|
|
|
if v.profileURL == nil {
|
|
|
|
return &url.URL{}
|
|
|
|
}
|
2024-01-02 09:54:11 +00:00
|
|
|
return v.profileURL
|
|
|
|
}
|
|
|
|
|
|
|
|
func (v BaseVillage) IsZero() bool {
|
|
|
|
return v == BaseVillage{}
|
|
|
|
}
|
|
|
|
|
|
|
|
type BaseVillages []BaseVillage
|