navidrome/model/model.go

45 lines
944 B
Go
Raw Normal View History

2020-01-15 04:22:34 +01:00
package model
import (
"errors"
2020-01-20 02:40:18 +01:00
"github.com/deluan/rest"
)
var (
2016-03-23 21:30:38 +01:00
ErrNotFound = errors.New("data not found")
)
// 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
type Filters map[string]interface{}
2016-03-04 04:44:28 +01:00
type QueryOptions struct {
SortBy string
Desc bool
Offset int
Size int
Filters Filters
2016-03-04 04:44:28 +01:00
}
2020-01-20 02:40:18 +01:00
type ResourceRepository interface {
rest.Repository
rest.Persistable
}
type DataStore interface {
Album() AlbumRepository
Artist() ArtistRepository
MediaFile() MediaFileRepository
MediaFolder() MediaFolderRepository
Genre() GenreRepository
Playlist() PlaylistRepository
Property() PropertyRepository
2020-01-20 02:40:18 +01:00
Resource(model interface{}) ResourceRepository
WithTx(func(tx DataStore) error) error
}