quintodrome/model/datastore.go

41 lines
1.1 KiB
Go
Raw Normal View History

2020-01-14 18:22:34 -09:00
package model
import (
"context"
2020-01-19 16:40:18 -09:00
"github.com/deluan/rest"
)
// Filters use the same operators as Beego ORM: See https://beego.me/docs/mvc/model/query.md#operators
// Ex: var q = QueryOptions{Filters: Filters{"name__istartswith": "Deluan","age__gt": 25}}
// All conditions will be ANDed together
// TODO Implement filter in repositories' methods
2016-03-03 18:44:28 -09:00
type QueryOptions struct {
Sort string
Order string
Max int
Offset int
Filters map[string]interface{}
2016-03-03 18:44:28 -09:00
}
2020-01-19 16:40:18 -09:00
type ResourceRepository interface {
rest.Repository
rest.Persistable
}
type DataStore interface {
Album(ctx context.Context) AlbumRepository
Artist(ctx context.Context) ArtistRepository
MediaFile(ctx context.Context) MediaFileRepository
MediaFolder(ctx context.Context) MediaFolderRepository
Genre(ctx context.Context) GenreRepository
Playlist(ctx context.Context) PlaylistRepository
Property(ctx context.Context) PropertyRepository
User(ctx context.Context) UserRepository
Annotation(ctx context.Context) AnnotationRepository
Resource(ctx context.Context, model interface{}) ResourceRepository
2020-01-19 16:40:18 -09:00
WithTx(func(tx DataStore) error) error
}