oc-lib/resource.go
2024-07-16 11:05:11 +02:00

94 lines
2.0 KiB
Go

package oclib
import (
"go.mongodb.org/mongo-driver/bson/primitive"
)
// AbstractResource is the struct containing all of the attributes commons to all ressources
// Resource is the interface to be implemented by all classes inheriting from Resource to have the same behavior
//http://www.inanzzz.com/index.php/post/wqbs/a-basic-usage-of-int-and-string-enum-types-in-golang
type ResourceType int
const (
INVALID ResourceType = iota
DATA
PROCESSING
STORAGE
DATACENTER
WORKFLOW
)
var extensions = [...]string{
"INVALID",
"DATA",
"PROCESSING",
"STORAGE",
"DATACENTER",
"WORKFLOW",
}
type Resource interface{
GetType() ResourceType
getOneResourceByID() Resource
}
type AbstractResource struct {
Uuid string `json:"Id" required:"true" `
Name string `json:"Name" required:"true" `
ShortDescription string
Description string
Logo string
Owner string
OwnerLogo string
SourceUrl string
Graphic GraphicElement `json:"GraphicElement" `
}
// func (r *AbstractResource) getOneResourceByID(id string, resType ResourceType){
// targetDBCollection := r.GetType().MongoCollection() // Change the rType by the result of reflect
// var retObj interface{}
// filter := bson.M{"_id": getObjIDFromString(id)}
// res := targetDBCollection.FindOne(services.MngoCtx, filter)
// res.Decode(retObj)
// if res.Err() != nil {
// logs.Warn("Couldn't find resource: " + res.Err().Error())
// }
// return retObj, res.Err()
// }
func getObjIDFromString(id string) interface{} {
objectID, err := primitive.ObjectIDFromHex(id)
if err == nil {
return objectID
}
return id
}
func postToMongo(id string) {
}
func (r *AbstractResource) isLinked(){
// Get the link collection in this workflow
// test if the current resource is a dest OR a source at least one
// (len(slice[r.ID == dest]) > 0 || len(slice[r.ID == 1]) > 1 )
}
// func (r *Resource) GetType() ResourceType {
// return INVALID
// }