package share import ( "time" "forge.cadoles.com/arcad/edge/pkg/app" "forge.cadoles.com/arcad/edge/pkg/storage/share" ) func FromResource(res share.Resource) *SerializableResource { serializableAttributes := make([]*SerializableAttribute, len(res.Attributes())) for attrIdx, attr := range res.Attributes() { serializableAttributes[attrIdx] = FromAttribute(attr) } return &SerializableResource{ ID_: res.ID(), Origin_: res.Origin(), Attributes_: serializableAttributes, } } func FromAttribute(attr share.Attribute) *SerializableAttribute { return &SerializableAttribute{ Name_: attr.Name(), Value_: attr.Value(), Type_: attr.Type(), UpdatedAt_: attr.UpdatedAt(), CreatedAt_: attr.CreatedAt(), } } type SerializableResource struct { ID_ share.ResourceID Origin_ app.ID Attributes_ []*SerializableAttribute } // Attributes implements share.Resource. func (r *SerializableResource) Attributes() []share.Attribute { attributes := make([]share.Attribute, len(r.Attributes_)) for idx, attr := range r.Attributes_ { attributes[idx] = attr } return attributes } // ID implements share.Resource. func (r *SerializableResource) ID() share.ResourceID { return r.ID_ } // Origin implements share.Resource. func (r *SerializableResource) Origin() app.ID { return r.Origin_ } var _ share.Resource = &SerializableResource{} type SerializableAttribute struct { Name_ string Value_ any Type_ share.ValueType UpdatedAt_ time.Time CreatedAt_ time.Time } // CreatedAt implements share.Attribute. func (a *SerializableAttribute) CreatedAt() time.Time { return a.CreatedAt_ } // Name implements share.Attribute. func (a *SerializableAttribute) Name() string { return a.Name_ } // Type implements share.Attribute. func (a *SerializableAttribute) Type() share.ValueType { return a.Type_ } // UpdatedAt implements share.Attribute. func (a *SerializableAttribute) UpdatedAt() time.Time { return a.UpdatedAt_ } // Value implements share.Attribute. func (a *SerializableAttribute) Value() any { return a.Value_ } var _ share.Attribute = &SerializableAttribute{}