rename models.LangVersion -> models.Version

This commit is contained in:
Dawid Wysokiński 2020-11-06 19:04:34 +01:00
parent 5d4d8b3077
commit 6c4f27f3d2
6 changed files with 122 additions and 118 deletions

View File

@ -1,103 +0,0 @@
package models
import (
"fmt"
"io"
"strconv"
"strings"
)
type LanguageTag string
const (
LanguageTagPL LanguageTag = "pl"
LanguageTagInt LanguageTag = "en"
LanguageTagDE LanguageTag = "de"
LanguageTagUK LanguageTag = "uk"
LanguageTagIT LanguageTag = "it"
LanguageTagFR LanguageTag = "fr"
LanguageTagUS LanguageTag = "us"
LanguageTagNL LanguageTag = "nl"
LanguageTagES LanguageTag = "es"
LanguageTagRO LanguageTag = "ro"
LanguageTagRU LanguageTag = "ru"
LanguageTagGR LanguageTag = "gr"
LanguageTagTR LanguageTag = "tr"
LanguageTagCS LanguageTag = "cs"
LanguageTagCH LanguageTag = "ch"
LanguageTagPT LanguageTag = "pt"
LanguageTagBR LanguageTag = "br"
LanguageTagHU LanguageTag = "hu"
)
func (lt LanguageTag) IsValid() bool {
switch lt {
case LanguageTagPL,
LanguageTagInt,
LanguageTagDE,
LanguageTagBR,
LanguageTagCH,
LanguageTagCS,
LanguageTagES,
LanguageTagFR,
LanguageTagGR,
LanguageTagHU,
LanguageTagIT,
LanguageTagNL,
LanguageTagPT,
LanguageTagRO,
LanguageTagRU,
LanguageTagTR,
LanguageTagUK,
LanguageTagUS:
return true
}
return false
}
func (lt LanguageTag) String() string {
return string(lt)
}
func (lt *LanguageTag) UnmarshalGQL(v interface{}) error {
str, ok := v.(string)
if !ok {
return fmt.Errorf("enums must be strings")
}
*lt = LanguageTag(strings.ToLower(str))
if !lt.IsValid() {
return fmt.Errorf("%s is not a valid LanguageTag", str)
}
return nil
}
func (lt LanguageTag) MarshalGQL(w io.Writer) {
fmt.Fprint(w, strconv.Quote(lt.String()))
}
type LangVersion struct {
tableName struct{} `pg:"alias:lang_version"`
Tag LanguageTag `pg:",pk" json:"tag" gqlgen:"tag"`
Name string `json:"name" gqlgen:"name" pg:",unique"`
Host string `json:"host" gqlgen:"host"`
Timezone string `json:"timezone" gqlgen:"timezone"`
SpecialServers SpecialServers `json:"specialServers" gqlgen:"specialServers" pg:"rel:has-many"`
}
type LangVersionFilter struct {
tableName struct{} `urlstruct:"lang_version"`
Tag []LanguageTag `json:"tag" gqlgen:"tag"`
TagNEQ []LanguageTag `json:"tagNEQ" gqlgen:"tagNEQ"`
Host []string `json:"host" gqlgen:"host"`
HostNEQ []string `json:"hostNEQ" gqlgen:"hostNEQ"`
HostMATCH string `json:"hostMATCH" gqlgen:"hostMATCH"`
HostIEQ string `json:"hostIEQ" gqlgen:"hostIEQ"`
Offset int `urlstruct:",nowhere" json:"offset" gqlgen:"offset"`
Limit int `urlstruct:",nowhere" json:"limit" gqlgen:"limit"`
Sort string `urlstruct:",nowhere" json:"sort" gqlgen:"sort"`
}

View File

@ -3,10 +3,10 @@ package models
import "time"
type PlayerNameChange struct {
LangVersionTag LanguageTag `pg:",unique:group_1" json:"langVersionTag" gqlgen:"langVersionTag" xml:"langVersionTag"`
LangVersion *LangVersion `pg:"fk:lang_version_tag,rel:has-one" json:"langVersion" gqlgen:"langVersion" xml:"langVersion"`
PlayerID int `pg:",unique:group_1" json:"playerID" gqlgen:"playerID" xml:"playerID"`
OldName string `pg:",unique:group_1" json:"oldName" gqlgen:"oldName" xml:"oldName"`
NewName string `pg:",unique:group_1" json:"newName" gqlgen:"newName" xml:"newName"`
ChangeDate time.Time `pg:"default:CURRENT_DATE,type:DATE,use_zero,unique:group_1" json:"changeDate" gqlgen:"changeDate" xml:"changeDate"`
VersionCode VersionCode `pg:",unique:group_1" json:"versionCode" gqlgen:"versionCode" xml:"versionCode"`
Version *Version `pg:"fk:lang_version_tag,rel:has-one" json:"version" gqlgen:"version" xml:"version"`
PlayerID int `pg:",unique:group_1" json:"playerID" gqlgen:"playerID" xml:"playerID"`
OldName string `pg:",unique:group_1" json:"oldName" gqlgen:"oldName" xml:"oldName"`
NewName string `pg:",unique:group_1" json:"newName" gqlgen:"newName" xml:"newName"`
ChangeDate time.Time `pg:"default:CURRENT_DATE,type:DATE,use_zero,unique:group_1" json:"changeDate" gqlgen:"changeDate" xml:"changeDate"`
}

View File

@ -58,8 +58,8 @@ type Server struct {
BuildingConfig BuildingConfig `json:"buildingConfig" gqlgen:"buildingConfig" xml:"buildingConfig"`
UnitConfig UnitConfig `json:"unitConfig" gqlgen:"unitConfig" xml:"unitConfig"`
LangVersionTag LanguageTag `json:"langVersionTag" gqlgen:"langVersionTag" xml:"langVersionTag"`
LangVersion *LangVersion `json:"langVersion,omitempty" gqlgen:"-" xml:"langVersion" pg:"rel:has-one"`
VersionCode VersionCode `json:"versionCode" gqlgen:"versionCode" xml:"versionCode"`
Version *Version `json:"version,omitempty" gqlgen:"-" xml:"version" pg:"rel:has-one"`
DataUpdatedAt time.Time `pg:"default:now(),use_zero" json:"dataUpdatedAt" gqlgen:"dataUpdatedAt" xml:"dataUpdatedAt"`
HistoryUpdatedAt time.Time `pg:"default:now(),use_zero" json:"historyUpdatedAt" gqlgen:"historyUpdatedAt" xml:"historyUpdatedAt"`
@ -77,8 +77,10 @@ type ServerFilter struct {
Status []ServerStatus `json:"status" gqlgen:"status"`
StatusNEQ []ServerStatus `json:"statusNEQ" gqlgen:"statusNEQ"`
LangVersionTag []LanguageTag `json:"langVersionTag" gqlgen:"langVersionTag"`
LangVersionTagNEQ []LanguageTag `json:"langVersionTagNEQ" gqlgen:"langVersionTagNEQ"`
LangVersionTag []VersionCode `urlstruct:",nowhere" json:"langVersionTag" gqlgen:"langVersionTag"`
LangVersionTagNEQ []VersionCode `urlstruct:",nowhere" json:"langVersionTagNEQ" gqlgen:"langVersionTagNEQ"`
VersionCode []VersionCode `json:"versionCode" gqlgen:"versionCode"`
VersionCodeNEQ []VersionCode `json:"versionCodeNEQ" gqlgen:"versionCodeNEQ"`
Offset int `urlstruct:",nowhere" json:"offset" gqlgen:"offset"`
Limit int `urlstruct:",nowhere" json:"limit" gqlgen:"limit"`

View File

@ -3,9 +3,9 @@ package models
type SpecialServer struct {
tableName struct{} `pg:"special_servers,alias:special_server"`
LangVersionTag LanguageTag `pg:",unique:group_1" json:"langVersionTag" gqlgen:"langVersionTag" xml:"langVersionTag"`
LangVersion *LangVersion `pg:"fk:lang_version_tag,rel:has-one" json:"omitempty,langVersion" gqlgen:"-" xml:"langVersion"`
Key string `pg:",unique:group_1" json:"key" gqlgen:"key" xml:"key"`
VersionCode VersionCode `pg:",unique:group_1" json:"versionCode" gqlgen:"versionCode" xml:"versionCode"`
Version *Version `pg:"fk:lang_version_tag,rel:has-one" json:"omitempty,version" gqlgen:"-" xml:"version"`
Key string `pg:",unique:group_1" json:"key" gqlgen:"key" xml:"key"`
}
type SpecialServers []*SpecialServer

105
models/version.go Normal file
View File

@ -0,0 +1,105 @@
package models
import (
"fmt"
"io"
"strconv"
"strings"
)
type VersionCode string
const (
VersionCodePL VersionCode = "pl"
VersionCodeInt VersionCode = "en"
VersionCodeDE VersionCode = "de"
VersionCodeUK VersionCode = "uk"
VersionCodeIT VersionCode = "it"
VersionCodeFR VersionCode = "fr"
VersionCodeUS VersionCode = "us"
VersionCodeNL VersionCode = "nl"
VersionCodeES VersionCode = "es"
VersionCodeRO VersionCode = "ro"
VersionCodeRU VersionCode = "ru"
VersionCodeGR VersionCode = "gr"
VersionCodeTR VersionCode = "tr"
VersionCodeCS VersionCode = "cs"
VersionCodeCH VersionCode = "ch"
VersionCodePT VersionCode = "pt"
VersionCodeBR VersionCode = "br"
VersionCodeHU VersionCode = "hu"
)
func (vc VersionCode) IsValid() bool {
switch vc {
case VersionCodePL,
VersionCodeInt,
VersionCodeDE,
VersionCodeBR,
VersionCodeCH,
VersionCodeCS,
VersionCodeES,
VersionCodeFR,
VersionCodeGR,
VersionCodeHU,
VersionCodeIT,
VersionCodeNL,
VersionCodePT,
VersionCodeRO,
VersionCodeRU,
VersionCodeTR,
VersionCodeUK,
VersionCodeUS:
return true
}
return false
}
func (vc VersionCode) String() string {
return string(vc)
}
func (vc *VersionCode) UnmarshalGQL(v interface{}) error {
str, ok := v.(string)
if !ok {
return fmt.Errorf("enums must be strings")
}
*vc = VersionCode(strings.ToLower(str))
if !vc.IsValid() {
return fmt.Errorf("%s is not a valid VersionCode", str)
}
return nil
}
func (vc VersionCode) MarshalGQL(w io.Writer) {
fmt.Fprint(w, strconv.Quote(vc.String()))
}
type Version struct {
tableName struct{} `pg:"alias:version"`
Code VersionCode `pg:",pk" json:"code" gqlgen:"code"`
Name string `json:"name" gqlgen:"name" pg:",unique"`
Host string `json:"host" gqlgen:"host"`
Timezone string `json:"timezone" gqlgen:"timezone"`
SpecialServers SpecialServers `json:"specialServers" gqlgen:"specialServers" pg:"rel:has-many"`
}
type VersionFilter struct {
tableName struct{} `urlstruct:"version"`
Code []VersionCode `json:"code" gqlgen:"code"`
CodeNEQ []VersionCode `json:"codeNEQ" gqlgen:"codeNEQ"`
LanguageTag []VersionCode `json:"languageTag" gqlgen:"languageTag" urlstruct:",nowhere"`
LanguageTagNEQ []VersionCode `json:"languageTagNEQ" gqlgen:"languageTagNEQ" urlstruct:",nowhere"`
Host []string `json:"host" gqlgen:"host"`
HostNEQ []string `json:"hostNEQ" gqlgen:"hostNEQ"`
HostMATCH string `json:"hostMATCH" gqlgen:"hostMATCH"`
HostIEQ string `json:"hostIEQ" gqlgen:"hostIEQ"`
Offset int `urlstruct:",nowhere" json:"offset" gqlgen:"offset"`
Limit int `urlstruct:",nowhere" json:"limit" gqlgen:"limit"`
Sort string `urlstruct:",nowhere" json:"sort" gqlgen:"sort"`
}

View File

@ -4,9 +4,9 @@ import (
"github.com/tribalwarshelp/shared/models"
)
func LanguageTagFromServerKey(key string) models.LanguageTag {
func VersionCodeFromServerKey(key string) models.VersionCode {
if len(key) < 2 {
return ""
}
return models.LanguageTag(key[0:2])
return models.VersionCode(key[0:2])
}