78 lines
1.6 KiB
Go
78 lines
1.6 KiB
Go
|
package domain
|
||
|
|
||
|
import (
|
||
|
"math"
|
||
|
"net/url"
|
||
|
)
|
||
|
|
||
|
type TribesSyncedEventPayload struct {
|
||
|
serverKey string
|
||
|
serverURL *url.URL
|
||
|
versionCode string
|
||
|
numTribes int
|
||
|
}
|
||
|
|
||
|
const tribesSyncedEventPayloadModelName = "TribesSyncedEventPayload"
|
||
|
|
||
|
func NewTribesSyncedEventPayload(
|
||
|
serverKey string,
|
||
|
serverURL *url.URL,
|
||
|
versionCode string,
|
||
|
numTribes int,
|
||
|
) (TribesSyncedEventPayload, error) {
|
||
|
if serverKey == "" {
|
||
|
return TribesSyncedEventPayload{}, ValidationError{
|
||
|
Model: tribesSyncedEventPayloadModelName,
|
||
|
Field: "serverKey",
|
||
|
Err: ErrRequired,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if serverURL == nil {
|
||
|
return TribesSyncedEventPayload{}, ValidationError{
|
||
|
Model: tribesSyncedEventPayloadModelName,
|
||
|
Field: "serverURL",
|
||
|
Err: ErrNil,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if versionCode == "" {
|
||
|
return TribesSyncedEventPayload{}, ValidationError{
|
||
|
Model: tribesSyncedEventPayloadModelName,
|
||
|
Field: "versionCode",
|
||
|
Err: ErrRequired,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if err := validateIntInRange(numTribes, 0, math.MaxInt); err != nil {
|
||
|
return TribesSyncedEventPayload{}, ValidationError{
|
||
|
Model: tribesSyncedEventPayloadModelName,
|
||
|
Field: "numTribes",
|
||
|
Err: err,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return TribesSyncedEventPayload{
|
||
|
serverKey: serverKey,
|
||
|
serverURL: serverURL,
|
||
|
versionCode: versionCode,
|
||
|
numTribes: numTribes,
|
||
|
}, nil
|
||
|
}
|
||
|
|
||
|
func (p TribesSyncedEventPayload) ServerKey() string {
|
||
|
return p.serverKey
|
||
|
}
|
||
|
|
||
|
func (p TribesSyncedEventPayload) ServerURL() *url.URL {
|
||
|
return p.serverURL
|
||
|
}
|
||
|
|
||
|
func (p TribesSyncedEventPayload) VersionCode() string {
|
||
|
return p.versionCode
|
||
|
}
|
||
|
|
||
|
func (p TribesSyncedEventPayload) NumTribes() int {
|
||
|
return p.numTribes
|
||
|
}
|