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(ArtistInfo))
|
||||
orm.RegisterModel(new(CheckSums))
|
||||
orm.RegisterModel(new(Property))
|
||||
err := orm.RegisterDataBase("default", "sqlite3", dbPath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
||||
@@ -12,7 +12,7 @@ var Set = wire.NewSet(
|
||||
NewAlbumRepository,
|
||||
NewArtistIndexRepository,
|
||||
NewCheckSumRepository,
|
||||
db_ledis.NewPropertyRepository,
|
||||
NewPropertyRepository,
|
||||
db_ledis.NewPlaylistRepository,
|
||||
persistence.NewNowPlayingRepository,
|
||||
persistence.NewMediaFolderRepository,
|
||||
|
||||
Reference in New Issue
Block a user