Add model interface (#1808)
This commit is contained in:
parent
3ffb899951
commit
ee36e26edc
51
model/model.go
Normal file
51
model/model.go
Normal file
@ -0,0 +1,51 @@
|
||||
// Package model is an interface for data modelling
|
||||
package model
|
||||
|
||||
import (
|
||||
"github.com/micro/go-micro/v2/store"
|
||||
"github.com/micro/go-micro/v2/sync"
|
||||
)
|
||||
|
||||
// Model provides an interface for data modelling
|
||||
type Model interface {
|
||||
// Initialise options
|
||||
Init(...Option) error
|
||||
// NewEntity creates a new entity to store or access
|
||||
NewEntity(name string, value interface{}) Entity
|
||||
// Create a value
|
||||
Create(Entity) error
|
||||
// Read values
|
||||
Read(...ReadOption) ([]Entity, error)
|
||||
// Update the value
|
||||
Update(Entity) error
|
||||
// Delete an entity
|
||||
Delete(...DeleteOption) error
|
||||
// Implementation of the model
|
||||
String() string
|
||||
}
|
||||
|
||||
type Entity interface {
|
||||
// Unique id of the entity
|
||||
Id() string
|
||||
// The value associated with the entity
|
||||
Value() interface{}
|
||||
// Attributes of the enity
|
||||
Attributes() map[string]interface{}
|
||||
}
|
||||
|
||||
type Options struct {
|
||||
// for locking
|
||||
Sync sync.Sync
|
||||
// for storage
|
||||
Store store.Store
|
||||
}
|
||||
|
||||
type Option func(o *Options)
|
||||
|
||||
type ReadOptions struct{}
|
||||
|
||||
type ReadOption func(o *ReadOptions)
|
||||
|
||||
type DeleteOptions struct{}
|
||||
|
||||
type DeleteOption func(o *DeleteOptions)
|
Loading…
Reference in New Issue
Block a user