diff --git a/api/get_indexes.go b/api/get_indexes.go index 4579bfa0..2b58db42 100644 --- a/api/get_indexes.go +++ b/api/get_indexes.go @@ -2,18 +2,18 @@ package api import ( "github.com/astaxie/beego" - "github.com/deluan/gosonic/repositories" "github.com/deluan/gosonic/utils" "github.com/karlkfi/inject" "github.com/deluan/gosonic/api/responses" "github.com/deluan/gosonic/consts" "strconv" + "github.com/deluan/gosonic/domain" ) type GetIndexesController struct { beego.Controller - repo repositories.ArtistIndex - properties repositories.Property + repo domain.ArtistIndexRepository + properties domain.PropertyRepository } func (c *GetIndexesController) Prepare() { diff --git a/api/get_indexes_test.go b/api/get_indexes_test.go index 044c934b..00a2bb91 100644 --- a/api/get_indexes_test.go +++ b/api/get_indexes_test.go @@ -6,11 +6,11 @@ import ( "github.com/deluan/gosonic/utils" . "github.com/smartystreets/goconvey/convey" "github.com/deluan/gosonic/tests" - "github.com/deluan/gosonic/repositories" "encoding/xml" "github.com/deluan/gosonic/api/responses" "github.com/deluan/gosonic/consts" "github.com/deluan/gosonic/tests/mocks" + "github.com/deluan/gosonic/domain" ) const ( @@ -20,11 +20,11 @@ const ( func TestGetIndexes(t *testing.T) { tests.Init(t, false) mockRepo := mocks.CreateMockArtistIndexRepo() - utils.DefineSingleton(new(repositories.ArtistIndex), func() repositories.ArtistIndex { + utils.DefineSingleton(new(domain.ArtistIndexRepository), func() domain.ArtistIndexRepository { return mockRepo }) propRepo := mocks.CreateMockPropertyRepo() - utils.DefineSingleton(new(repositories.Property), func() repositories.Property { + utils.DefineSingleton(new(domain.PropertyRepository), func() domain.PropertyRepository { return propRepo }) diff --git a/api/get_music_folders.go b/api/get_music_folders.go index d0b8153c..2eba5c18 100644 --- a/api/get_music_folders.go +++ b/api/get_music_folders.go @@ -3,13 +3,13 @@ package api import ( "github.com/astaxie/beego" "github.com/deluan/gosonic/api/responses" - "github.com/deluan/gosonic/repositories" + "github.com/deluan/gosonic/persistence" ) type GetMusicFoldersController struct{ beego.Controller } func (c *GetMusicFoldersController) Get() { - repository := repositories.NewMediaFolderRepository() + repository := persistence.NewMediaFolderRepository() mediaFolderList, _ := repository.GetAll() folders := make([]responses.MusicFolder, len(mediaFolderList)) for i, f := range mediaFolderList { diff --git a/conf/inject_definitions.go b/conf/inject_definitions.go index e06db431..69fb97a2 100644 --- a/conf/inject_definitions.go +++ b/conf/inject_definitions.go @@ -2,10 +2,11 @@ package conf import ( "github.com/deluan/gosonic/utils" - "github.com/deluan/gosonic/repositories" + "github.com/deluan/gosonic/persistence" + "github.com/deluan/gosonic/domain" ) func init () { - utils.DefineSingleton(new(repositories.ArtistIndex), repositories.NewArtistIndexRepository) - utils.DefineSingleton(new(repositories.Property), repositories.NewPropertyRepository) + utils.DefineSingleton(new(domain.ArtistIndexRepository), persistence.NewArtistIndexRepository) + utils.DefineSingleton(new(domain.PropertyRepository), persistence.NewPropertyRepository) } diff --git a/models/album.go b/domain/album.go similarity index 94% rename from models/album.go rename to domain/album.go index 36369524..19bf2b7a 100644 --- a/models/album.go +++ b/domain/album.go @@ -1,4 +1,4 @@ -package models +package domain type Album struct { Id string diff --git a/models/artist.go b/domain/artist.go similarity index 76% rename from models/artist.go rename to domain/artist.go index 61ab228c..95257dbc 100644 --- a/models/artist.go +++ b/domain/artist.go @@ -1,4 +1,4 @@ -package models +package domain type Artist struct { Id string diff --git a/domain/index.go b/domain/index.go new file mode 100644 index 00000000..c2ddb8d2 --- /dev/null +++ b/domain/index.go @@ -0,0 +1,18 @@ +package domain + +type ArtistInfo struct { + ArtistId string + Artist string +} + +type ArtistIndex struct { + Id string + Artists []ArtistInfo +} + + +type ArtistIndexRepository interface { + Put(m *ArtistIndex) error + Get(id string) (*ArtistIndex, error) + GetAll() ([]ArtistIndex, error) +} diff --git a/models/media_file.go b/domain/media_file.go similarity index 94% rename from models/media_file.go rename to domain/media_file.go index 1da72739..2835d5d5 100644 --- a/models/media_file.go +++ b/domain/media_file.go @@ -1,4 +1,4 @@ -package models +package domain import ( "time" diff --git a/models/media_folder.go b/domain/media_folder.go similarity index 80% rename from models/media_folder.go rename to domain/media_folder.go index a1f72334..e2b7a5db 100644 --- a/models/media_folder.go +++ b/domain/media_folder.go @@ -1,4 +1,4 @@ -package models +package domain type MediaFolder struct { Id string diff --git a/domain/property.go b/domain/property.go new file mode 100644 index 00000000..e697ba6a --- /dev/null +++ b/domain/property.go @@ -0,0 +1,13 @@ +package domain + +type Property struct { + Id string + Value string +} + +type PropertyRepository interface { + Put(id string, value string) error + Get(id string) (string, error) + DefaultGet(id string, defaultValue string) (string, error) +} + diff --git a/models/index.go b/models/index.go deleted file mode 100644 index 89048f72..00000000 --- a/models/index.go +++ /dev/null @@ -1,13 +0,0 @@ -package models - -type ArtistInfo struct { - ArtistId string - Artist string -} - -type ArtistIndex struct { - Id string - Artists []ArtistInfo -} - - diff --git a/models/property.go b/models/property.go deleted file mode 100644 index f460eefa..00000000 --- a/models/property.go +++ /dev/null @@ -1,6 +0,0 @@ -package models - -type Property struct { - Id string - Value string -} diff --git a/repositories/.goconvey.goconvey b/persistence/.goconvey.goconvey similarity index 100% rename from repositories/.goconvey.goconvey rename to persistence/.goconvey.goconvey diff --git a/repositories/album_repository.go b/persistence/album_repository.go similarity index 53% rename from repositories/album_repository.go rename to persistence/album_repository.go index 81ef5432..30d95407 100644 --- a/repositories/album_repository.go +++ b/persistence/album_repository.go @@ -1,7 +1,7 @@ -package repositories +package persistence import ( - "github.com/deluan/gosonic/models" + "github.com/deluan/gosonic/domain" ) type Album struct { @@ -10,19 +10,19 @@ type Album struct { func NewAlbumRepository() *Album { r := &Album{} - r.init("album", &models.Album{}) + r.init("album", &domain.Album{}) return r } -func (r *Album) Put(m *models.Album) error { +func (r *Album) Put(m *domain.Album) error { if m.Id == "" { m.Id = r.NewId(m.ArtistId, m.Name) } return r.saveOrUpdate(m.Id, m) } -func (r *Album) Get(id string) (*models.Album, error) { +func (r *Album) Get(id string) (*domain.Album, error) { var rec interface{} rec, err := r.readEntity(id) - return rec.(*models.Album), err + return rec.(*domain.Album), err } \ No newline at end of file diff --git a/repositories/artist_repository.go b/persistence/artist_repository.go similarity index 50% rename from repositories/artist_repository.go rename to persistence/artist_repository.go index baa1a65b..d8f1ad85 100644 --- a/repositories/artist_repository.go +++ b/persistence/artist_repository.go @@ -1,7 +1,7 @@ -package repositories +package persistence import ( - "github.com/deluan/gosonic/models" + "github.com/deluan/gosonic/domain" ) type Artist struct { @@ -10,24 +10,24 @@ type Artist struct { func NewArtistRepository() *Artist { r := &Artist{} - r.init("artist", &models.Artist{}) + r.init("artist", &domain.Artist{}) return r } -func (r *Artist) Put(m *models.Artist) error { +func (r *Artist) Put(m *domain.Artist) error { if m.Id == "" { m.Id = r.NewId(m.Name) } return r.saveOrUpdate(m.Id, m) } -func (r *Artist) Get(id string) (*models.Artist, error) { +func (r *Artist) Get(id string) (*domain.Artist, error) { var rec interface{} rec, err := r.readEntity(id) - return rec.(*models.Artist), err + return rec.(*domain.Artist), err } -func (r *Artist) GetByName(name string) (*models.Artist, error) { +func (r *Artist) GetByName(name string) (*domain.Artist, error) { id := r.NewId(name) return r.Get(id) } diff --git a/repositories/base_repository.go b/persistence/base_repository.go similarity index 99% rename from repositories/base_repository.go rename to persistence/base_repository.go index cf2fff5f..8e94095d 100644 --- a/repositories/base_repository.go +++ b/persistence/base_repository.go @@ -1,4 +1,4 @@ -package repositories +package persistence import ( "fmt" diff --git a/repositories/base_repository_test.go b/persistence/base_repository_test.go similarity index 99% rename from repositories/base_repository_test.go rename to persistence/base_repository_test.go index 6a02537a..7a870cef 100644 --- a/repositories/base_repository_test.go +++ b/persistence/base_repository_test.go @@ -1,4 +1,4 @@ -package repositories +package persistence import ( "testing" diff --git a/repositories/index_repository.go b/persistence/index_repository.go similarity index 50% rename from repositories/index_repository.go rename to persistence/index_repository.go index ef02468c..c7e487fd 100644 --- a/repositories/index_repository.go +++ b/persistence/index_repository.go @@ -1,29 +1,23 @@ -package repositories +package persistence import ( - "github.com/deluan/gosonic/models" + "github.com/deluan/gosonic/domain" "errors" "sort" "github.com/deluan/gosonic/utils" ) -type ArtistIndex interface { - Put(m *models.ArtistIndex) error - Get(id string) (*models.ArtistIndex, error) - GetAll() ([]models.ArtistIndex, error) -} - type artistIndex struct { BaseRepository } -func NewArtistIndexRepository() ArtistIndex { +func NewArtistIndexRepository() domain.ArtistIndexRepository { r := &artistIndex{} - r.init("index", &models.ArtistIndex{}) + r.init("index", &domain.ArtistIndex{}) return r } -func (r *artistIndex) Put(m *models.ArtistIndex) error { +func (r *artistIndex) Put(m *domain.ArtistIndex) error { if m.Id == "" { return errors.New("Id is not set") } @@ -31,19 +25,19 @@ func (r *artistIndex) Put(m *models.ArtistIndex) error { return r.saveOrUpdate(m.Id, m) } -func (r *artistIndex) Get(id string) (*models.ArtistIndex, error) { +func (r *artistIndex) Get(id string) (*domain.ArtistIndex, error) { var rec interface{} rec, err := r.readEntity(id) - return rec.(*models.ArtistIndex), err + return rec.(*domain.ArtistIndex), err } -func (r *artistIndex) GetAll() ([]models.ArtistIndex, error) { - var indices = make([]models.ArtistIndex, 0) +func (r *artistIndex) GetAll() ([]domain.ArtistIndex, error) { + var indices = make([]domain.ArtistIndex, 0) err := r.loadAll(&indices, "") return indices, err } -type byArtistName []models.ArtistInfo +type byArtistName []domain.ArtistInfo func (a byArtistName) Len() int { return len(a) diff --git a/repositories/index_repository_test.go b/persistence/index_repository_test.go similarity index 86% rename from repositories/index_repository_test.go rename to persistence/index_repository_test.go index e8a6f6b6..a25a59af 100644 --- a/repositories/index_repository_test.go +++ b/persistence/index_repository_test.go @@ -1,10 +1,10 @@ -package repositories +package persistence import ( "testing" . "github.com/smartystreets/goconvey/convey" "github.com/deluan/gosonic/tests" - "github.com/deluan/gosonic/models" + "github.com/deluan/gosonic/domain" "strconv" ) @@ -16,7 +16,7 @@ func TestIndexRepository(t *testing.T) { repo := NewArtistIndexRepository() Convey("It should be able to read and write to the database", func() { - i := &models.ArtistIndex{Id: "123"} + i := &domain.ArtistIndex{Id: "123"} repo.Put(i) s,_ := repo.Get("123") @@ -24,7 +24,7 @@ func TestIndexRepository(t *testing.T) { So(s, shouldBeEqual, i) }) Convey("Method Put() should return error if Id is not set", func() { - i := &models.ArtistIndex{} + i := &domain.ArtistIndex{} err := repo.Put(i) @@ -32,7 +32,7 @@ func TestIndexRepository(t *testing.T) { }) Convey("Given that I have 4 records", func() { for i := 1; i <= 4; i++ { - e := &models.ArtistIndex{Id: strconv.Itoa(i)} + e := &domain.ArtistIndex{Id: strconv.Itoa(i)} repo.Put(e) } diff --git a/repositories/ledis_utils.go b/persistence/ledis_utils.go similarity index 96% rename from repositories/ledis_utils.go rename to persistence/ledis_utils.go index 7b869788..384ef67a 100644 --- a/repositories/ledis_utils.go +++ b/persistence/ledis_utils.go @@ -1,4 +1,4 @@ -package repositories +package persistence import ( "sync" diff --git a/repositories/media_file_repository.go b/persistence/media_file_repository.go similarity index 51% rename from repositories/media_file_repository.go rename to persistence/media_file_repository.go index fb620e71..0b419139 100644 --- a/repositories/media_file_repository.go +++ b/persistence/media_file_repository.go @@ -1,7 +1,7 @@ -package repositories +package persistence import ( - "github.com/deluan/gosonic/models" + "github.com/deluan/gosonic/domain" ) type MediaFile struct { @@ -10,10 +10,10 @@ type MediaFile struct { func NewMediaFileRepository() *MediaFile { r := &MediaFile{} - r.init("mediafile", &models.MediaFile{}) + r.init("mediafile", &domain.MediaFile{}) return r } -func (r *MediaFile) Put(m *models.MediaFile) error { +func (r *MediaFile) Put(m *domain.MediaFile) error { return r.saveOrUpdate(m.Id, m) } \ No newline at end of file diff --git a/repositories/media_folders_repository.go b/persistence/media_folders_repository.go similarity index 51% rename from repositories/media_folders_repository.go rename to persistence/media_folders_repository.go index d6111f7e..dd11c1e3 100644 --- a/repositories/media_folders_repository.go +++ b/persistence/media_folders_repository.go @@ -1,7 +1,7 @@ -package repositories +package persistence import ( - "github.com/deluan/gosonic/models" + "github.com/deluan/gosonic/domain" "github.com/astaxie/beego" ) @@ -12,9 +12,9 @@ func NewMediaFolderRepository() *MediaFolder { } -func (*MediaFolder) GetAll() ([]*models.MediaFolder, error) { - mediaFolder := models.MediaFolder{Id: "0", Name: "iTunes Library", Path: beego.AppConfig.String("musicFolder")} - result := make([]*models.MediaFolder, 1) +func (*MediaFolder) GetAll() ([]*domain.MediaFolder, error) { + mediaFolder := domain.MediaFolder{Id: "0", Name: "iTunes Library", Path: beego.AppConfig.String("musicFolder")} + result := make([]*domain.MediaFolder, 1) result[0] = &mediaFolder return result, nil } \ No newline at end of file diff --git a/repositories/property_repository.go b/persistence/property_repository.go similarity index 61% rename from repositories/property_repository.go rename to persistence/property_repository.go index 02839d90..0154f401 100644 --- a/repositories/property_repository.go +++ b/persistence/property_repository.go @@ -1,28 +1,22 @@ -package repositories +package persistence import ( - "github.com/deluan/gosonic/models" + "github.com/deluan/gosonic/domain" "errors" ) -type Property interface { - Put(id string, value string) error - Get(id string) (string, error) - DefaultGet(id string, defaultValue string) (string, error) -} - type property struct { BaseRepository } func NewPropertyRepository() *property { r := &property{} - r.init("property", &models.Property{}) + r.init("property", &domain.Property{}) return r } func (r *property) Put(id string, value string) error { - m := &models.Property{Id: id, Value: value} + m := &domain.Property{Id: id, Value: value} if m.Id == "" { return errors.New("Id is required") } @@ -32,7 +26,7 @@ func (r *property) Put(id string, value string) error { func (r *property) Get(id string) (string, error) { var rec interface{} rec, err := r.readEntity(id) - return rec.(*models.Property).Value, err + return rec.(*domain.Property).Value, err } func (r*property) DefaultGet(id string, defaultValue string) (string, error) { diff --git a/scanner/scanner.go b/scanner/scanner.go index f7ad0e0d..f6e7d0c9 100644 --- a/scanner/scanner.go +++ b/scanner/scanner.go @@ -2,8 +2,8 @@ package scanner import ( "github.com/astaxie/beego" - "github.com/deluan/gosonic/repositories" - "github.com/deluan/gosonic/models" + "github.com/deluan/gosonic/persistence" + "github.com/deluan/gosonic/domain" "strings" "github.com/deluan/gosonic/utils" "github.com/deluan/gosonic/consts" @@ -15,7 +15,7 @@ type Scanner interface { LoadFolder(path string) []Track } -type tempIndex map[string]models.ArtistInfo +type tempIndex map[string]domain.ArtistInfo // TODO Implement a flag 'isScanning'. func StartImport() { @@ -31,9 +31,9 @@ func doImport(mediaFolder string, scanner Scanner) { func importLibrary(files []Track) (err error){ indexGroups := utils.ParseIndexGroups(beego.AppConfig.String("indexGroups")) - mfRepo := repositories.NewMediaFileRepository() - albumRepo := repositories.NewAlbumRepository() - artistRepo := repositories.NewArtistRepository() + mfRepo := persistence.NewMediaFileRepository() + albumRepo := persistence.NewAlbumRepository() + artistRepo := persistence.NewArtistRepository() var artistIndex = make(map[string]tempIndex) for _, t := range files { @@ -54,7 +54,7 @@ func importLibrary(files []Track) (err error){ beego.Info("Total MediaFiles in database:", c) if err == nil { - propertyRepo := repositories.NewPropertyRepository() + propertyRepo := persistence.NewPropertyRepository() millis := time.Now().UnixNano() / 1000000 propertyRepo.Put(consts.LastScan, fmt.Sprint(millis)) beego.Info("LastScan timestamp:", millis) @@ -63,8 +63,8 @@ func importLibrary(files []Track) (err error){ return err } -func parseTrack(t *Track) (*models.MediaFile, *models.Album, *models.Artist) { - mf := &models.MediaFile{ +func parseTrack(t *Track) (*domain.MediaFile, *domain.Album, *domain.Artist) { + mf := &domain.MediaFile{ Id: t.Id, Album: t.Album, Artist: t.Artist, @@ -76,20 +76,20 @@ func parseTrack(t *Track) (*models.MediaFile, *models.Album, *models.Artist) { UpdatedAt: t.UpdatedAt, } - album := &models.Album{ + album := &domain.Album{ Name: t.Album, Year: t.Year, Compilation: t.Compilation, } - artist := &models.Artist{ + artist := &domain.Artist{ Name: t.RealArtist(), } return mf, album, artist } -func persist(mfRepo *repositories.MediaFile, mf *models.MediaFile, albumRepo *repositories.Album, album *models.Album, artistRepo *repositories.Artist, artist *models.Artist) { +func persist(mfRepo *persistence.MediaFile, mf *domain.MediaFile, albumRepo *persistence.Album, album *domain.Album, artistRepo *persistence.Artist, artist *domain.Artist) { if err := artistRepo.Put(artist); err != nil { beego.Error(err) } @@ -105,7 +105,7 @@ func persist(mfRepo *repositories.MediaFile, mf *models.MediaFile, albumRepo *re } } -func collectIndex(ig utils.IndexGroups, a *models.Artist, artistIndex map[string]tempIndex) { +func collectIndex(ig utils.IndexGroups, a *domain.Artist, artistIndex map[string]tempIndex) { name := a.Name indexName := strings.ToLower(utils.NoArticle(name)) if indexName == "" { @@ -117,7 +117,7 @@ func collectIndex(ig utils.IndexGroups, a *models.Artist, artistIndex map[string artists = make(tempIndex) artistIndex[group] = artists } - artists[indexName] = models.ArtistInfo{ArtistId: a.Id, Artist: a.Name} + artists[indexName] = domain.ArtistInfo{ArtistId: a.Id, Artist: a.Name} } func findGroup(ig utils.IndexGroups, name string) string { @@ -131,10 +131,10 @@ func findGroup(ig utils.IndexGroups, name string) string { } func saveIndex(artistIndex map[string]tempIndex) error { - idxRepo := repositories.NewArtistIndexRepository() + idxRepo := persistence.NewArtistIndexRepository() for k, temp := range artistIndex { - idx := &models.ArtistIndex{Id: k} + idx := &domain.ArtistIndex{Id: k} for _, v := range temp { idx.Artists = append(idx.Artists, v) } diff --git a/scanner/scanner_test.go b/scanner/scanner_test.go index 4f951f42..14905744 100644 --- a/scanner/scanner_test.go +++ b/scanner/scanner_test.go @@ -4,7 +4,7 @@ import ( "testing" . "github.com/smartystreets/goconvey/convey" "github.com/deluan/gosonic/utils" - "github.com/deluan/gosonic/models" + "github.com/deluan/gosonic/domain" "github.com/deluan/gosonic/tests" ) @@ -14,7 +14,7 @@ func TestCollectIndex(t *testing.T) { ig := utils.IndexGroups{"A":"A", "B":"B", "Tom":"Tom", "X":"X-Z"} Convey("Simple Name", t, func() { - a := &models.Artist{Name: "Björk"} + a := &domain.Artist{Name: "Björk"} artistIndex := make(map[string]tempIndex) collectIndex(ig, a, artistIndex) @@ -28,7 +28,7 @@ func TestCollectIndex(t *testing.T) { }) Convey("Name not in the index", t, func() { - a := &models.Artist{Name: "Kraftwerk"} + a := &domain.Artist{Name: "Kraftwerk"} artistIndex := make(map[string]tempIndex) collectIndex(ig, a, artistIndex) @@ -42,7 +42,7 @@ func TestCollectIndex(t *testing.T) { }) Convey("Name starts with an article", t, func() { - a := &models.Artist{Name: "The The"} + a := &domain.Artist{Name: "The The"} artistIndex := make(map[string]tempIndex) collectIndex(ig, a, artistIndex) @@ -56,7 +56,7 @@ func TestCollectIndex(t *testing.T) { }) Convey("Name match a multichar entry", t, func() { - a := &models.Artist{Name: "Tom Waits"} + a := &domain.Artist{Name: "Tom Waits"} artistIndex := make(map[string]tempIndex) collectIndex(ig, a, artistIndex) diff --git a/tests/mocks/mock_index_repo_tests.go b/tests/mocks/mock_index_repo_tests.go index 2a8d67f8..d98d9cd8 100644 --- a/tests/mocks/mock_index_repo_tests.go +++ b/tests/mocks/mock_index_repo_tests.go @@ -1,10 +1,9 @@ package mocks import ( - "github.com/deluan/gosonic/models" + "github.com/deluan/gosonic/domain" "fmt" "encoding/json" - "github.com/deluan/gosonic/repositories" "errors" ) @@ -13,8 +12,8 @@ func CreateMockArtistIndexRepo() *MockArtistIndex { } type MockArtistIndex struct { - repositories.ArtistIndex - data []models.ArtistIndex + domain.ArtistIndexRepository + data []domain.ArtistIndex err bool } @@ -23,14 +22,14 @@ func (m *MockArtistIndex) SetError(err bool) { } func (m *MockArtistIndex) SetData(j string, length int) { - m.data = make([]models.ArtistIndex, length) + m.data = make([]domain.ArtistIndex, length) err := json.Unmarshal([]byte(j), &m.data) if err != nil { fmt.Println("ERROR: ", err) } } -func (m *MockArtistIndex) GetAll() ([]models.ArtistIndex, error) { +func (m *MockArtistIndex) GetAll() ([]domain.ArtistIndex, error) { if m.err { return nil, errors.New("Error!") } diff --git a/tests/mocks/mock_property_repo_tests.go b/tests/mocks/mock_property_repo_tests.go index f11af9d7..9736fa24 100644 --- a/tests/mocks/mock_property_repo_tests.go +++ b/tests/mocks/mock_property_repo_tests.go @@ -1,8 +1,8 @@ package mocks import ( - "github.com/deluan/gosonic/repositories" "errors" + "github.com/deluan/gosonic/domain" ) func CreateMockPropertyRepo() *MockProperty { @@ -10,7 +10,7 @@ func CreateMockPropertyRepo() *MockProperty { } type MockProperty struct { - repositories.Property + domain.PropertyRepository data map[string]string err bool }