33 lines
833 B
Go
33 lines
833 B
Go
|
package share
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"time"
|
||
|
|
||
|
"forge.cadoles.com/arcad/edge/pkg/app"
|
||
|
)
|
||
|
|
||
|
type ResourceID string
|
||
|
|
||
|
type Resource interface {
|
||
|
ID() ResourceID
|
||
|
Origin() app.ID
|
||
|
Attributes() []Attribute
|
||
|
}
|
||
|
|
||
|
type Attribute interface {
|
||
|
Name() string
|
||
|
Value() any
|
||
|
Type() ValueType
|
||
|
UpdatedAt() time.Time
|
||
|
CreatedAt() time.Time
|
||
|
}
|
||
|
|
||
|
type Repository interface {
|
||
|
DeleteResource(ctx context.Context, origin app.ID, resourceID ResourceID) error
|
||
|
FindResources(ctx context.Context, funcs ...FindResourcesOptionFunc) ([]Resource, error)
|
||
|
GetResource(ctx context.Context, origin app.ID, resourceID ResourceID) (Resource, error)
|
||
|
UpdateAttributes(ctx context.Context, origin app.ID, resourceID ResourceID, attributes ...Attribute) (Resource, error)
|
||
|
DeleteAttributes(ctx context.Context, origin app.ID, resourceID ResourceID, names ...string) error
|
||
|
}
|