Big Refactor:

- Create model.DataStore, with provision for transactions
- Change all layers dependencies on repositories to use DataStore
- Implemented persistence.SQLStore
- Removed iTunes Bridge/Importer support
This commit is contained in:
Deluan
2020-01-19 15:37:41 -05:00
parent 40186f7e10
commit 67eeb218c4
47 changed files with 389 additions and 1621 deletions
+8 -11
View File
@@ -22,22 +22,21 @@ type playlistRepository struct {
sqlRepository
}
func NewPlaylistRepository() model.PlaylistRepository {
func NewPlaylistRepository(o orm.Ormer) model.PlaylistRepository {
r := &playlistRepository{}
r.ormer = o
r.tableName = "playlist"
return r
}
func (r *playlistRepository) Put(p *model.Playlist) error {
tp := r.fromDomain(p)
return withTx(func(o orm.Ormer) error {
return r.put(o, p.ID, &tp)
})
return r.put(p.ID, &tp)
}
func (r *playlistRepository) Get(id string) (*model.Playlist, error) {
tp := &playlist{ID: id}
err := Db().Read(tp)
err := r.ormer.Read(tp)
if err == orm.ErrNoRows {
return nil, model.ErrNotFound
}
@@ -50,7 +49,7 @@ func (r *playlistRepository) Get(id string) (*model.Playlist, error) {
func (r *playlistRepository) GetAll(options ...model.QueryOptions) (model.Playlists, error) {
var all []playlist
_, err := r.newQuery(Db(), options...).All(&all)
_, err := r.newQuery(options...).All(&all)
if err != nil {
return nil, err
}
@@ -66,12 +65,10 @@ func (r *playlistRepository) toPlaylists(all []playlist) (model.Playlists, error
}
func (r *playlistRepository) PurgeInactive(activeList model.Playlists) ([]string, error) {
return nil, withTx(func(o orm.Ormer) error {
_, err := r.purgeInactive(o, activeList, func(item interface{}) string {
return item.(model.Playlist).ID
})
return err
_, err := r.purgeInactive(activeList, func(item interface{}) string {
return item.(model.Playlist).ID
})
return nil, err
}
func (r *playlistRepository) toDomain(p *playlist) model.Playlist {