diff --git a/persistence/db_sql/checksum_repository.go b/persistence/db_sql/checksum_repository.go index c00027a47..f19af76af 100644 --- a/persistence/db_sql/checksum_repository.go +++ b/persistence/db_sql/checksum_repository.go @@ -52,7 +52,7 @@ func (r *checkSumRepository) Get(id string) (string, error) { func (r *checkSumRepository) SetData(newSums map[string]string) error { err := WithTx(func(o orm.Ormer) error { - _, err := Db().Raw("delete from checksum").Exec() + _, err := Db().QueryTable(&Checksum{}).Filter("id__isnull", false).Delete() if err != nil { return err } diff --git a/persistence/db_sql/index_repository.go b/persistence/db_sql/index_repository.go index f0f17b56c..b81ab8118 100644 --- a/persistence/db_sql/index_repository.go +++ b/persistence/db_sql/index_repository.go @@ -105,9 +105,4 @@ func (r *artistIndexRepository) GetAll() (domain.ArtistIndexes, error) { return result, nil } -func (r *artistIndexRepository) DeleteAll() error { - _, err := Db().Raw("delete from artist_info").Exec() - return err -} - var _ domain.ArtistIndexRepository = (*artistIndexRepository)(nil) diff --git a/persistence/db_sql/property_repository_test.go b/persistence/db_sql/property_repository_test.go index b0bfd14d6..d0850caf2 100644 --- a/persistence/db_sql/property_repository_test.go +++ b/persistence/db_sql/property_repository_test.go @@ -10,8 +10,8 @@ var _ = Describe("PropertyRepository", func() { var repo domain.PropertyRepository BeforeEach(func() { - Db().Raw("delete from property").Exec() repo = NewPropertyRepository() + repo.(*propertyRepository).DeleteAll() }) It("saves and retrieves data", func() { diff --git a/persistence/db_sql/sql.go b/persistence/db_sql/sql.go index b539e7ed5..f79b3fddc 100644 --- a/persistence/db_sql/sql.go +++ b/persistence/db_sql/sql.go @@ -15,12 +15,17 @@ var once sync.Once func Db() orm.Ormer { once.Do(func() { - err := os.MkdirAll(conf.Sonic.DbPath, 0700) - if err != nil { - panic(err) + dbPath := conf.Sonic.DbPath + if dbPath == ":memory:" { + dbPath = "file::memory:?cache=shared" + } else { + err := os.MkdirAll(conf.Sonic.DbPath, 0700) + if err != nil { + panic(err) + } + dbPath = path.Join(conf.Sonic.DbPath, "sqlite.db") } - dbPath := path.Join(conf.Sonic.DbPath, "sqlite.db") - err = initORM(dbPath) + err := initORM(dbPath) if err != nil { panic(err) } diff --git a/persistence/db_sql/sql_repository.go b/persistence/db_sql/sql_repository.go index a561ad04a..7d64f72b9 100644 --- a/persistence/db_sql/sql_repository.go +++ b/persistence/db_sql/sql_repository.go @@ -103,6 +103,11 @@ func difference(slice1 []string, slice2 []string) []string { return diffStr } +func (r *sqlRepository) DeleteAll() error { + _, err := r.newQuery(Db()).Filter("id__isnull", false).Delete() + return err +} + func (r *sqlRepository) purgeInactive(activeList interface{}, getId func(item interface{}) string) ([]string, error) { allIds, err := r.GetAllIds() if err != nil { diff --git a/persistence/db_sql/sql_suite_test.go b/persistence/db_sql/sql_suite_test.go index 5d05e88cd..ffa6368ec 100644 --- a/persistence/db_sql/sql_suite_test.go +++ b/persistence/db_sql/sql_suite_test.go @@ -1,8 +1,6 @@ package db_sql import ( - "io/ioutil" - "os" "testing" "github.com/cloudsonic/sonic-server/conf" @@ -31,8 +29,9 @@ var testArtists = domain.Artists{ var _ = Describe("Initialize test DB", func() { BeforeSuite(func() { - conf.Sonic.DbPath, _ = ioutil.TempDir("", "cloudsonic_tests") - os.MkdirAll(conf.Sonic.DbPath, 0700) + //conf.Sonic.DbPath, _ = ioutil.TempDir("", "cloudsonic_tests") + //os.MkdirAll(conf.Sonic.DbPath, 0700) + conf.Sonic.DbPath = ":memory:" Db() artistRepo := NewArtistRepository() for _, a := range testArtists {