From 284533ad1d7bb3b87b768e875e1c4f83e66a703b Mon Sep 17 00:00:00 2001 From: mr Date: Wed, 8 Apr 2026 15:40:44 +0200 Subject: [PATCH] Simplify & Live Bug --- models/live/live_datacenter.go | 2 +- models/live/live_mongo_accessor.go | 23 ++++++++++++++++++++++ models/live/live_storage.go | 2 +- models/resources/compute.go | 2 +- models/resources/data.go | 2 +- models/resources/native_tools.go | 2 +- models/resources/processing.go | 2 +- models/resources/resource_accessor.go | 4 +--- models/resources/storage.go | 2 +- models/resources/tests/resource_test.go | 4 +--- models/resources/workflow.go | 2 +- models/workflow/workflow_mongo_accessor.go | 10 +++++----- 12 files changed, 38 insertions(+), 19 deletions(-) diff --git a/models/live/live_datacenter.go b/models/live/live_datacenter.go index b466cc2..ac103a0 100644 --- a/models/live/live_datacenter.go +++ b/models/live/live_datacenter.go @@ -33,7 +33,7 @@ func (d *LiveDatacenter) GetAccessor(request *tools.APIRequest) utils.Accessor { return NewAccessor[*LiveDatacenter](tools.LIVE_DATACENTER, request) // Create a new instance of the accessor } func (d *LiveDatacenter) GetResourceAccessor(request *tools.APIRequest) utils.Accessor { - return resources.NewAccessor[*resources.ComputeResource](tools.COMPUTE_RESOURCE, request, func() utils.DBObject { return &resources.ComputeResource{} }) + return resources.NewAccessor[*resources.ComputeResource](tools.COMPUTE_RESOURCE, request) } func (d *LiveDatacenter) GetResource() resources.ResourceInterface { diff --git a/models/live/live_mongo_accessor.go b/models/live/live_mongo_accessor.go index 1d1e0d9..e4c54a9 100644 --- a/models/live/live_mongo_accessor.go +++ b/models/live/live_mongo_accessor.go @@ -4,6 +4,7 @@ import ( "encoding/json" "errors" + "cloud.o-forge.io/core/oc-lib/dbs" "cloud.o-forge.io/core/oc-lib/logs" "cloud.o-forge.io/core/oc-lib/models/utils" "cloud.o-forge.io/core/oc-lib/tools" @@ -89,3 +90,25 @@ func (a *liveMongoAccessor[T]) CopyOne(data utils.DBObject) (utils.DBObject, int } } } + +func (wfa *liveMongoAccessor[T]) LoadAll(isDraft bool, offset int64, limit int64) ([]utils.ShallowDBObject, int, error) { + return utils.GenericLoadAll[T](wfa.GetExec(isDraft), isDraft, wfa, offset, limit) +} + +func (wfa *liveMongoAccessor[T]) Search(filters *dbs.Filters, search string, isDraft bool, offset int64, limit int64) ([]utils.ShallowDBObject, int, error) { + if filters == nil && search == "*" { + return utils.GenericLoadAll[T](func(d utils.DBObject) utils.ShallowDBObject { + return d + }, isDraft, wfa, offset, limit) + } + return utils.GenericSearch[T](filters, search, wfa.New().GetObjectFilters(search), + func(d utils.DBObject) utils.ShallowDBObject { + return d + }, isDraft, wfa, offset, limit) +} + +func (a *liveMongoAccessor[T]) GetExec(isDraft bool) func(utils.DBObject) utils.ShallowDBObject { + return func(d utils.DBObject) utils.ShallowDBObject { + return d + } +} diff --git a/models/live/live_storage.go b/models/live/live_storage.go index 66b4eee..a8dd6e0 100644 --- a/models/live/live_storage.go +++ b/models/live/live_storage.go @@ -29,7 +29,7 @@ func (d *LiveStorage) GetAccessor(request *tools.APIRequest) utils.Accessor { return NewAccessor[*LiveStorage](tools.LIVE_STORAGE, request) // Create a new instance of the accessor } func (d *LiveStorage) GetResourceAccessor(request *tools.APIRequest) utils.Accessor { - return resources.NewAccessor[*resources.ComputeResource](tools.STORAGE_RESOURCE, request, func() utils.DBObject { return &resources.StorageResource{} }) + return resources.NewAccessor[*resources.StorageResource](tools.STORAGE_RESOURCE, request) } func (d *LiveStorage) GetResource() resources.ResourceInterface { diff --git a/models/resources/compute.go b/models/resources/compute.go index d3a536d..61d43ad 100755 --- a/models/resources/compute.go +++ b/models/resources/compute.go @@ -25,7 +25,7 @@ type ComputeResource struct { } func (d *ComputeResource) GetAccessor(request *tools.APIRequest) utils.Accessor { - return NewAccessor[*ComputeResource](tools.COMPUTE_RESOURCE, request, func() utils.DBObject { return &ComputeResource{} }) + return NewAccessor[*ComputeResource](tools.COMPUTE_RESOURCE, request) } func (r *ComputeResource) GetType() string { diff --git a/models/resources/data.go b/models/resources/data.go index 68f9508..5f7a357 100755 --- a/models/resources/data.go +++ b/models/resources/data.go @@ -30,7 +30,7 @@ type DataResource struct { } func (d *DataResource) GetAccessor(request *tools.APIRequest) utils.Accessor { - return NewAccessor[*DataResource](tools.DATA_RESOURCE, request, func() utils.DBObject { return &DataResource{} }) // Create a new instance of the accessor + return NewAccessor[*DataResource](tools.DATA_RESOURCE, request) // Create a new instance of the accessor } func (r *DataResource) GetType() string { diff --git a/models/resources/native_tools.go b/models/resources/native_tools.go index 1ffc979..f872954 100644 --- a/models/resources/native_tools.go +++ b/models/resources/native_tools.go @@ -23,7 +23,7 @@ func (d *NativeTool) SetName(name string) { } func (d *NativeTool) GetAccessor(request *tools.APIRequest) utils.Accessor { - return NewAccessor[*NativeTool](tools.NATIVE_TOOL, request, func() utils.DBObject { return &NativeTool{} }) + return NewAccessor[*NativeTool](tools.NATIVE_TOOL, request) } func (r *NativeTool) AddInstances(instance ResourceInstanceITF) { diff --git a/models/resources/processing.go b/models/resources/processing.go index 5e28f9f..13a3919 100755 --- a/models/resources/processing.go +++ b/models/resources/processing.go @@ -114,7 +114,7 @@ func (a *PricedProcessingResource) GetExplicitDurationInS() float64 { } func (d *ProcessingResource) GetAccessor(request *tools.APIRequest) utils.Accessor { - return NewAccessor[*ProcessingResource](tools.PROCESSING_RESOURCE, request, func() utils.DBObject { return &ProcessingResource{} }) // Create a new instance of the accessor + return NewAccessor[*ProcessingResource](tools.PROCESSING_RESOURCE, request) // Create a new instance of the accessor } func (abs *ProcessingResource) ConvertToPricedResource(t tools.DataType, selectedInstance *int, selectedPartnership *int, selectedBuyingStrategy *int, selectedStrategy *int, selectedBookingModeIndex *int, request *tools.APIRequest) (pricing.PricedItemITF, error) { diff --git a/models/resources/resource_accessor.go b/models/resources/resource_accessor.go index 969431d..671197a 100755 --- a/models/resources/resource_accessor.go +++ b/models/resources/resource_accessor.go @@ -12,11 +12,10 @@ import ( type ResourceMongoAccessor[T ResourceInterface] struct { utils.AbstractAccessor[ResourceInterface] // AbstractAccessor contains the basic fields of an accessor (model, caller) - generateData func() utils.DBObject } // New creates a new instance of the computeMongoAccessor -func NewAccessor[T ResourceInterface](t tools.DataType, request *tools.APIRequest, g func() utils.DBObject) *ResourceMongoAccessor[T] { +func NewAccessor[T ResourceInterface](t tools.DataType, request *tools.APIRequest) *ResourceMongoAccessor[T] { if !slices.Contains([]tools.DataType{ tools.COMPUTE_RESOURCE, tools.STORAGE_RESOURCE, tools.PROCESSING_RESOURCE, tools.WORKFLOW_RESOURCE, @@ -47,7 +46,6 @@ func NewAccessor[T ResourceInterface](t tools.DataType, request *tools.APIReques return nil }, }, - generateData: g, } } diff --git a/models/resources/storage.go b/models/resources/storage.go index eaea40b..c429dc7 100755 --- a/models/resources/storage.go +++ b/models/resources/storage.go @@ -23,7 +23,7 @@ type StorageResource struct { } func (d *StorageResource) GetAccessor(request *tools.APIRequest) utils.Accessor { - return NewAccessor[*StorageResource](tools.STORAGE_RESOURCE, request, func() utils.DBObject { return &StorageResource{} }) // Create a new instance of the accessor + return NewAccessor[*StorageResource](tools.STORAGE_RESOURCE, request) // Create a new instance of the accessor } func (r *StorageResource) GetType() string { diff --git a/models/resources/tests/resource_test.go b/models/resources/tests/resource_test.go index db50c8f..be00727 100644 --- a/models/resources/tests/resource_test.go +++ b/models/resources/tests/resource_test.go @@ -114,8 +114,6 @@ func (f *FakeResource) ConvertToPricedResource(t tools.DataType, a *int, b *int, func (f *FakeResource) VerifyAuth(string, *tools.APIRequest) bool { return true } func TestNewAccessor_ReturnsValid(t *testing.T) { - acc := resources.NewAccessor[*FakeResource](tools.COMPUTE_RESOURCE, &tools.APIRequest{}, func() utils.DBObject { - return &FakeResource{} - }) + acc := resources.NewAccessor[*FakeResource](tools.COMPUTE_RESOURCE, &tools.APIRequest{}) assert.NotNil(t, acc) } diff --git a/models/resources/workflow.go b/models/resources/workflow.go index b8045d0..5335d20 100755 --- a/models/resources/workflow.go +++ b/models/resources/workflow.go @@ -16,7 +16,7 @@ type WorkflowResource struct { } func (d *WorkflowResource) GetAccessor(request *tools.APIRequest) utils.Accessor { - return NewAccessor[*WorkflowResource](tools.WORKFLOW_RESOURCE, request, func() utils.DBObject { return &WorkflowResource{} }) + return NewAccessor[*WorkflowResource](tools.WORKFLOW_RESOURCE, request) } func (r *WorkflowResource) AddInstances(instance ResourceInstanceITF) { diff --git a/models/workflow/workflow_mongo_accessor.go b/models/workflow/workflow_mongo_accessor.go index 3618a26..28df832 100644 --- a/models/workflow/workflow_mongo_accessor.go +++ b/models/workflow/workflow_mongo_accessor.go @@ -210,15 +210,15 @@ func (a *workflowMongoAccessor) verifyResource(obj utils.DBObject) utils.DBObjec var access utils.Accessor switch t { case tools.COMPUTE_RESOURCE: - access = resources.NewAccessor[*resources.ComputeResource](t, a.GetRequest(), func() utils.DBObject { return &resources.ComputeResource{} }) + access = resources.NewAccessor[*resources.ComputeResource](t, a.GetRequest()) case tools.PROCESSING_RESOURCE: - access = resources.NewAccessor[*resources.ProcessingResource](t, a.GetRequest(), func() utils.DBObject { return &resources.ProcessingResource{} }) + access = resources.NewAccessor[*resources.ProcessingResource](t, a.GetRequest()) case tools.STORAGE_RESOURCE: - access = resources.NewAccessor[*resources.StorageResource](t, a.GetRequest(), func() utils.DBObject { return &resources.StorageResource{} }) + access = resources.NewAccessor[*resources.StorageResource](t, a.GetRequest()) case tools.WORKFLOW_RESOURCE: - access = resources.NewAccessor[*resources.WorkflowResource](t, a.GetRequest(), func() utils.DBObject { return &resources.WorkflowResource{} }) + access = resources.NewAccessor[*resources.WorkflowResource](t, a.GetRequest()) case tools.DATA_RESOURCE: - access = resources.NewAccessor[*resources.DataResource](t, a.GetRequest(), func() utils.DBObject { return &resources.DataResource{} }) + access = resources.NewAccessor[*resources.DataResource](t, a.GetRequest()) default: wf.Graph.Clear(resource.GetID()) }