| 
									
										
										
										
											2024-07-18 11:51:12 +02:00
										 |  |  | package data | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2024-07-18 14:39:54 +02:00
										 |  |  | 	"encoding/json" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-30 12:08:13 +02:00
										 |  |  | 	"cloud.o-forge.io/core/oc-lib/models/resource_model" | 
					
						
							| 
									
										
										
										
											2024-07-18 13:35:14 +02:00
										 |  |  | 	"cloud.o-forge.io/core/oc-lib/models/utils" | 
					
						
							| 
									
										
										
										
											2024-08-12 16:11:25 +02:00
										 |  |  | 	"cloud.o-forge.io/core/oc-lib/tools" | 
					
						
							| 
									
										
										
										
											2024-07-18 11:51:12 +02:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-30 14:50:48 +02:00
										 |  |  | /* | 
					
						
							|  |  |  | * DataResource is a struct that represents a data resource | 
					
						
							|  |  |  | * it defines the resource data | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2024-07-19 10:54:58 +02:00
										 |  |  | type DataResource struct { | 
					
						
							| 
									
										
										
										
											2024-08-30 14:50:48 +02:00
										 |  |  | 	resource_model.AbstractResource          // AbstractResource contains the basic fields of an object (id, name) | 
					
						
							|  |  |  | 	Protocols                       []string `json:"protocol,omitempty" bson:"protocol,omitempty"`                                 //TODO Enum type | 
					
						
							|  |  |  | 	DataType                        string   `json:"datatype,omitempty" bson:"datatype,omitempty"`                                 // DataType is the type of the data | 
					
						
							|  |  |  | 	Example                         string   `json:"example,omitempty" bson:"example,omitempty" description:"base64 encoded data"` // Example is an example of the data | 
					
						
							| 
									
										
										
										
											2024-07-18 11:51:12 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-19 10:54:58 +02:00
										 |  |  | func (dma *DataResource) Deserialize(j map[string]interface{}) utils.DBObject { | 
					
						
							| 
									
										
										
										
											2024-07-18 14:39:54 +02:00
										 |  |  | 	b, err := json.Marshal(j) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return nil | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	json.Unmarshal(b, dma) | 
					
						
							|  |  |  | 	return dma | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-19 10:54:58 +02:00
										 |  |  | func (dma *DataResource) Serialize() map[string]interface{} { | 
					
						
							| 
									
										
										
										
											2024-07-19 09:32:58 +02:00
										 |  |  | 	var m map[string]interface{} | 
					
						
							|  |  |  | 	b, err := json.Marshal(dma) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return nil | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2024-07-24 09:53:30 +02:00
										 |  |  | 	json.Unmarshal(b, &m) | 
					
						
							| 
									
										
										
										
											2024-07-19 09:32:58 +02:00
										 |  |  | 	return m | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-12 16:11:25 +02:00
										 |  |  | func (d *DataResource) GetAccessor(caller *tools.HTTPCaller) utils.Accessor { | 
					
						
							| 
									
										
										
										
											2024-08-30 14:50:48 +02:00
										 |  |  | 	data := New()                          // Create a new instance of the accessor | 
					
						
							|  |  |  | 	data.Init(utils.DATA_RESOURCE, caller) // Initialize the accessor with the DATA_RESOURCE model type | 
					
						
							| 
									
										
										
										
											2024-07-18 11:51:12 +02:00
										 |  |  | 	return data | 
					
						
							|  |  |  | } |