oc-catalog/models/rtype/rtype.go

74 lines
1.2 KiB
Go

package rtype
import (
"cloud.o-forge.io/core/oc-catalog/services"
"github.com/beego/beego/v2/core/logs"
"go.mongodb.org/mongo-driver/mongo"
)
//http://www.inanzzz.com/index.php/post/wqbs/a-basic-usage-of-int-and-string-enum-types-in-golang
type Rtype int
const (
INVALID Rtype = iota
DATA
COMPUTING
STORAGE
DATACENTER
)
var extensions = [...]string{
"INVALID",
"data",
"computing",
"storage",
"datacenter",
}
func IsValidRtype(input string) bool {
for _, v := range extensions {
if v == input {
return true
}
}
return false
}
func NewRtype(rType string) Rtype {
switch rType {
case DATA.String():
return DATA
case COMPUTING.String():
return COMPUTING
case STORAGE.String():
return STORAGE
case DATACENTER.String():
return DATACENTER
default:
return INVALID
}
}
func (e Rtype) String() string {
return extensions[e]
}
func (e Rtype) MongoCollection() *mongo.Collection {
switch e {
case DATA:
return services.MngoCollData
case COMPUTING:
return services.MngoCollComputing
case STORAGE:
return services.MngoCollStorage
case DATACENTER:
return services.MngoCollDatacenter
default:
message := "Rtype " + e.String() + " is not implemented. Returning a nil"
logs.Error(message)
return nil
}
}