SQL/Orm PropertyRepository complete
This commit is contained in:
@@ -0,0 +1,55 @@
|
|||||||
|
package db_sql
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/astaxie/beego/orm"
|
||||||
|
"github.com/cloudsonic/sonic-server/domain"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Property struct {
|
||||||
|
ID string `orm:"pk;column(id)"`
|
||||||
|
Value string
|
||||||
|
}
|
||||||
|
|
||||||
|
type propertyRepository struct {
|
||||||
|
sqlRepository
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewPropertyRepository() domain.PropertyRepository {
|
||||||
|
r := &propertyRepository{}
|
||||||
|
r.entityName = "property"
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *propertyRepository) Put(id string, value string) error {
|
||||||
|
p := &Property{ID: id, Value: value}
|
||||||
|
num, err := Db().Update(p)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if num == 0 {
|
||||||
|
_, err = Db().Insert(p)
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *propertyRepository) Get(id string) (string, error) {
|
||||||
|
p := &Property{ID: id}
|
||||||
|
err := Db().Read(p)
|
||||||
|
if err == orm.ErrNoRows {
|
||||||
|
return "", domain.ErrNotFound
|
||||||
|
}
|
||||||
|
return p.Value, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *propertyRepository) DefaultGet(id string, defaultValue string) (string, error) {
|
||||||
|
value, err := r.Get(id)
|
||||||
|
if err == domain.ErrNotFound {
|
||||||
|
return defaultValue, nil
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return defaultValue, err
|
||||||
|
}
|
||||||
|
return value, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ domain.PropertyRepository = (*propertyRepository)(nil)
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package db_sql
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/cloudsonic/sonic-server/domain"
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ = Describe("PropertyRepository", func() {
|
||||||
|
var repo domain.PropertyRepository
|
||||||
|
|
||||||
|
BeforeEach(func() {
|
||||||
|
Db().QueryTable("property").Exclude("id", ".PHONY").Delete()
|
||||||
|
repo = NewPropertyRepository()
|
||||||
|
})
|
||||||
|
|
||||||
|
It("saves and retrieves data", func() {
|
||||||
|
Expect(repo.Put("1", "test")).To(BeNil())
|
||||||
|
Expect(repo.Get("1")).To(Equal("test"))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("returns default if data is not found", func() {
|
||||||
|
Expect(repo.DefaultGet("2", "default")).To(Equal("default"))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("returns value if found", func() {
|
||||||
|
Expect(repo.Put("3", "test")).To(BeNil())
|
||||||
|
Expect(repo.DefaultGet("3", "default")).To(Equal("test"))
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -59,6 +59,7 @@ func initORM(dbPath string) error {
|
|||||||
orm.RegisterModel(new(MediaFile))
|
orm.RegisterModel(new(MediaFile))
|
||||||
orm.RegisterModel(new(ArtistInfo))
|
orm.RegisterModel(new(ArtistInfo))
|
||||||
orm.RegisterModel(new(CheckSums))
|
orm.RegisterModel(new(CheckSums))
|
||||||
|
orm.RegisterModel(new(Property))
|
||||||
err := orm.RegisterDataBase("default", "sqlite3", dbPath)
|
err := orm.RegisterDataBase("default", "sqlite3", dbPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ var Set = wire.NewSet(
|
|||||||
NewAlbumRepository,
|
NewAlbumRepository,
|
||||||
NewArtistIndexRepository,
|
NewArtistIndexRepository,
|
||||||
NewCheckSumRepository,
|
NewCheckSumRepository,
|
||||||
db_ledis.NewPropertyRepository,
|
NewPropertyRepository,
|
||||||
db_ledis.NewPlaylistRepository,
|
db_ledis.NewPlaylistRepository,
|
||||||
persistence.NewNowPlayingRepository,
|
persistence.NewNowPlayingRepository,
|
||||||
persistence.NewMediaFolderRepository,
|
persistence.NewMediaFolderRepository,
|
||||||
|
|||||||
+1
-1
@@ -71,7 +71,7 @@ func createSQLProvider() *Provider {
|
|||||||
mediaFolderRepository := persistence.NewMediaFolderRepository()
|
mediaFolderRepository := persistence.NewMediaFolderRepository()
|
||||||
nowPlayingRepository := persistence.NewNowPlayingRepository()
|
nowPlayingRepository := persistence.NewNowPlayingRepository()
|
||||||
playlistRepository := db_ledis.NewPlaylistRepository()
|
playlistRepository := db_ledis.NewPlaylistRepository()
|
||||||
propertyRepository := db_ledis.NewPropertyRepository()
|
propertyRepository := db_sql.NewPropertyRepository()
|
||||||
provider := &Provider{
|
provider := &Provider{
|
||||||
AlbumRepository: albumRepository,
|
AlbumRepository: albumRepository,
|
||||||
ArtistRepository: artistRepository,
|
ArtistRepository: artistRepository,
|
||||||
|
|||||||
Reference in New Issue
Block a user