74 lines
1.2 KiB
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
|
|
}
|
|
}
|