combluotion/store/store.go
Dan Jones e7b88bcc09 Improve Store
Still need to fill out SQLite bootstrap

Also setup plug-in system mechanism
2024-09-14 20:37:51 -05:00

44 lines
1.2 KiB
Go

package store
import (
"codeberg.org/danjones000/lenore/config"
st "github.com/go-ap/fedbox/storage"
proc "github.com/go-ap/processing"
"github.com/openshift/osin"
)
type ClientSaver interface {
// UpdateClient updates the client (identified by it's id) and replaces the values with the values of client.
UpdateClient(c osin.Client) error
// CreateClient stores the client in the database and returns an error, if something went wrong.
CreateClient(c osin.Client) error
// RemoveClient removes a client (identified by id) from the database. Returns an error if something went wrong.
RemoveClient(id string) error
}
type ClientLister interface {
// ListClients lists existing clients
ListClients() ([]osin.Client, error)
GetClient(id string) (osin.Client, error)
}
type Bootstrapper interface {
// Bootstrap should initialize the data store so that it can be used.
// This will be called every time the application starts, so it MUST be idempotent and doesn't delete existing data.
// An option is to run migrations in this method.
Bootstrap(config.Config) error
}
type Store interface {
Bootstrapper
PartStore
}
type PartStore interface {
ClientSaver
ClientLister
proc.Store
proc.KeyLoader
osin.Storage
st.MetadataTyper
}