diff --git a/accounts/pkg/indexer/indexer.go b/accounts/pkg/indexer/indexer.go index 126d9ab39..f0f987f6a 100644 --- a/accounts/pkg/indexer/indexer.go +++ b/accounts/pkg/indexer/indexer.go @@ -14,9 +14,9 @@ import ( // Indexer is a facade to configure and query over multiple indices. type Indexer struct { - newConfig *config.Config - config *Config - indices typeMap + repoConfig *config.Config + config *Config + indices typeMap } type Config struct { @@ -34,8 +34,8 @@ func NewIndexer(cfg *Config) *Indexer { func CreateIndexer(cfg *config.Config) *Indexer { return &Indexer{ - newConfig: cfg, - indices: typeMap{}, + repoConfig: cfg, + indices: typeMap{}, } } @@ -47,28 +47,28 @@ func getRegistryStrategy(cfg *config.Config) string { return "cs3" } -func (i Indexer) AddUniqueIndex(t interface{}, indexBy, pkName, entityDirName string) error { - strategy := getRegistryStrategy(i.newConfig) - f := registry.IndexConstructorRegistry[strategy]["unique"] +func (i Indexer) AddIndex(t interface{}, indexBy, pkName, entityDirName, indexType string) error { + strategy := getRegistryStrategy(i.repoConfig) + f := registry.IndexConstructorRegistry[strategy][indexType] var idx index.Index if strategy == "disk" { idx = f( option.WithTypeName(getTypeFQN(t)), option.WithIndexBy(indexBy), - option.WithFilesDir(path.Join(i.newConfig.Repo.Disk.Path, entityDirName)), - option.WithDataDir(i.newConfig.Repo.Disk.Path), + option.WithFilesDir(path.Join(i.repoConfig.Repo.Disk.Path, entityDirName)), + option.WithDataDir(i.repoConfig.Repo.Disk.Path), ) } else if strategy == "cs3" { idx = f( option.WithTypeName(getTypeFQN(t)), option.WithIndexBy(indexBy), - option.WithFilesDir(path.Join(i.newConfig.Repo.Disk.Path, entityDirName)), - option.WithDataDir(i.newConfig.Repo.Disk.Path), - option.WithDataURL(i.newConfig.Repo.CS3.DataURL), - option.WithDataPrefix(i.newConfig.Repo.CS3.DataPrefix), - option.WithJWTSecret(i.newConfig.Repo.CS3.JWTSecret), - option.WithProviderAddr(i.newConfig.Repo.CS3.ProviderAddr), + option.WithFilesDir(path.Join(i.repoConfig.Repo.Disk.Path, entityDirName)), + option.WithDataDir(i.repoConfig.Repo.Disk.Path), + option.WithDataURL(i.repoConfig.Repo.CS3.DataURL), + option.WithDataPrefix(i.repoConfig.Repo.CS3.DataPrefix), + option.WithJWTSecret(i.repoConfig.Repo.CS3.JWTSecret), + option.WithProviderAddr(i.repoConfig.Repo.CS3.ProviderAddr), ) } @@ -76,28 +76,28 @@ func (i Indexer) AddUniqueIndex(t interface{}, indexBy, pkName, entityDirName st return idx.Init() } -func (i Indexer) AddNonUniqueIndex(t interface{}, indexBy, pkName, entityDirName string) error { - strategy := getRegistryStrategy(i.newConfig) - f := registry.IndexConstructorRegistry[strategy]["non_unique"] +func (i Indexer) AddNonUniqueIndex(t interface{}, indexBy, pkName, entityDirName, indexType string) error { + strategy := getRegistryStrategy(i.repoConfig) + f := registry.IndexConstructorRegistry[strategy][indexType] var idx index.Index if strategy == "disk" { idx = f( option.WithTypeName(getTypeFQN(t)), option.WithIndexBy(indexBy), - option.WithFilesDir(path.Join(i.newConfig.Repo.Disk.Path, entityDirName)), - option.WithDataDir(i.newConfig.Repo.Disk.Path), + option.WithFilesDir(path.Join(i.repoConfig.Repo.Disk.Path, entityDirName)), + option.WithDataDir(i.repoConfig.Repo.Disk.Path), ) } else if strategy == "cs3" { idx = f( option.WithTypeName(getTypeFQN(t)), option.WithIndexBy(indexBy), - option.WithFilesDir(path.Join(i.newConfig.Repo.Disk.Path, entityDirName)), - option.WithDataDir(i.newConfig.Repo.Disk.Path), - option.WithDataURL(i.newConfig.Repo.CS3.DataURL), - option.WithDataPrefix(i.newConfig.Repo.CS3.DataPrefix), - option.WithJWTSecret(i.newConfig.Repo.CS3.JWTSecret), - option.WithProviderAddr(i.newConfig.Repo.CS3.ProviderAddr), + option.WithFilesDir(path.Join(i.repoConfig.Repo.Disk.Path, entityDirName)), + option.WithDataDir(i.repoConfig.Repo.Disk.Path), + option.WithDataURL(i.repoConfig.Repo.CS3.DataURL), + option.WithDataPrefix(i.repoConfig.Repo.CS3.DataPrefix), + option.WithJWTSecret(i.repoConfig.Repo.CS3.JWTSecret), + option.WithProviderAddr(i.repoConfig.Repo.CS3.ProviderAddr), ) } diff --git a/accounts/pkg/indexer/indexer_test.go b/accounts/pkg/indexer/indexer_test.go index c652ce910..a3dd077cd 100644 --- a/accounts/pkg/indexer/indexer_test.go +++ b/accounts/pkg/indexer/indexer_test.go @@ -21,10 +21,11 @@ func TestIndexer_AddWithUniqueIndex(t *testing.T) { }, }) - indexer.AddUniqueIndex(&User{}, "UserName", "Id", "users") + err := indexer.AddIndex(&User{}, "UserName", "Id", "users", "unique") + assert.NoError(t, err) u := &User{Id: "abcdefg-123", UserName: "mikey", Email: "mikey@example.com"} - err := indexer.Add(u) + err = indexer.Add(u) assert.NoError(t, err) } @@ -41,10 +42,11 @@ func TestIndexer_AddWithUniqueIndexCS3(t *testing.T) { }, }) - indexer.AddUniqueIndex(&User{}, "UserName", "Id", "users") + err := indexer.AddIndex(&User{}, "UserName", "Id", "users", "unique") + assert.NoError(t, err) u := &User{Id: "abcdefg-123", UserName: "mikey", Email: "mikey@example.com"} - err := indexer.Add(u) + err = indexer.Add(u) assert.NoError(t, err) _ = os.RemoveAll(dataDir) @@ -63,7 +65,7 @@ func TestIndexer_AddWithNonUniqueIndexCS3(t *testing.T) { }, }) - err := indexer.AddNonUniqueIndex(&User{}, "UserName", "Id", "users") + err := indexer.AddIndex(&User{}, "UserName", "Id", "users", "non_unique") assert.NoError(t, err) u := &User{Id: "abcdefg-123", UserName: "mikey", Email: "mikey@example.com"} @@ -81,10 +83,11 @@ func TestIndexer_FindByWithUniqueIndex(t *testing.T) { Log: zerolog.Logger{}, }) - indexer.AddUniqueIndex(&User{}, "UserName", "Id", "users") + err := indexer.AddIndex(&User{}, "UserName", "Id", "users", "unique") + assert.NoError(t, err) u := &User{Id: "abcdefg-123", UserName: "mikey", Email: "mikey@example.com"} - err := indexer.Add(u) + err = indexer.Add(u) assert.NoError(t, err) res, err := indexer.FindBy(User{}, "UserName", "mikey") @@ -100,12 +103,13 @@ func TestIndexer_AddWithNonUniqueIndex(t *testing.T) { Log: zerolog.Logger{}, }) - indexer.AddNonUniqueIndex(&TestPet{}, "Kind", "Id", "pets") + err := indexer.AddIndex(&TestPet{}, "Kind", "Id", "pets", "non_unique") + assert.NoError(t, err) pet1 := TestPet{Id: "goefe-789", Kind: "Hog", Color: "Green", Name: "Dicky"} pet2 := TestPet{Id: "xadaf-189", Kind: "Hog", Color: "Green", Name: "Ricky"} - err := indexer.Add(pet1) + err = indexer.Add(pet1) assert.NoError(t, err) err = indexer.Add(pet2) @@ -125,12 +129,13 @@ func TestIndexer_DeleteWithNonUniqueIndex(t *testing.T) { Log: zerolog.Logger{}, }) - indexer.AddNonUniqueIndex(&TestPet{}, "Kind", "Id", "pets") + err := indexer.AddIndex(&TestPet{}, "Kind", "Id", "pets", "non_unique") + assert.NoError(t, err) pet1 := TestPet{Id: "goefe-789", Kind: "Hog", Color: "Green", Name: "Dicky"} pet2 := TestPet{Id: "xadaf-189", Kind: "Hog", Color: "Green", Name: "Ricky"} - err := indexer.Add(pet1) + err = indexer.Add(pet1) assert.NoError(t, err) err = indexer.Add(pet2) @@ -148,12 +153,13 @@ func TestIndexer_SearchWithNonUniqueIndex(t *testing.T) { Log: zerolog.Logger{}, }) - indexer.AddNonUniqueIndex(&TestPet{}, "Name", "Id", "pets") + err := indexer.AddIndex(&TestPet{}, "Name", "Id", "pets", "non_unique") + assert.NoError(t, err) pet1 := TestPet{Id: "goefe-789", Kind: "Hog", Color: "Green", Name: "Dicky"} pet2 := TestPet{Id: "xadaf-189", Kind: "Hog", Color: "Green", Name: "Ricky"} - err := indexer.Add(pet1) + err = indexer.Add(pet1) assert.NoError(t, err) err = indexer.Add(pet2) @@ -173,10 +179,10 @@ func TestIndexer_UpdateWithUniqueIndex(t *testing.T) { Log: zerolog.Logger{}, }) - err := indexer.AddUniqueIndex(&User{}, "UserName", "Id", "users") + err := indexer.AddIndex(&User{}, "UserName", "Id", "users", "unique") assert.NoError(t, err) - err = indexer.AddUniqueIndex(&User{}, "Email", "Id", "users") + err = indexer.AddIndex(&User{}, "Email", "Id", "users", "unique") assert.NoError(t, err) user1 := &User{Id: "abcdefg-123", UserName: "mikey", Email: "mikey@example.com"} @@ -227,12 +233,13 @@ func TestIndexer_UpdateWithNonUniqueIndex(t *testing.T) { Log: zerolog.Logger{}, }) - indexer.AddNonUniqueIndex(&TestPet{}, "Name", "Id", "pets") + err := indexer.AddIndex(&TestPet{}, "Name", "Id", "pets", "non_unique") + assert.NoError(t, err) pet1 := TestPet{Id: "goefe-789", Kind: "Hog", Color: "Green", Name: "Dicky"} pet2 := TestPet{Id: "xadaf-189", Kind: "Hog", Color: "Green", Name: "Ricky"} - err := indexer.Add(pet1) + err = indexer.Add(pet1) assert.NoError(t, err) err = indexer.Add(pet2) @@ -248,16 +255,16 @@ func TestManagerQueryMultipleIndices(t *testing.T) { Log: zerolog.Logger{}, }) - err := man.AddUniqueIndex("User", "Email", "users") + err := man.AddIndex("User", "Email", "users") assert.NoError(t, err) - err = man.AddUniqueIndex("User", "UserName", "users") + err = man.AddIndex("User", "UserName", "users") assert.NoError(t, err) err = man.AddNormalIndex("TestPet", "Color", "pets") assert.NoError(t, err) - err = man.AddUniqueIndex("TestPet", "Name", "pets") + err = man.AddIndex("TestPet", "Name", "pets") assert.NoError(t, err) for path := range testData { @@ -302,13 +309,13 @@ func TestManagerDelete(t *testing.T) { Log: zerolog.Logger{}, }) - err := man.AddUniqueIndex("User", "Email", "users") + err := man.AddIndex("User", "Email", "users") assert.NoError(t, err) - err = man.AddUniqueIndex("User", "UserName", "users") + err = man.AddIndex("User", "UserName", "users") assert.NoError(t, err) - err = man.AddUniqueIndex("TestPet", "Name", "pets") + err = man.AddIndex("TestPet", "Name", "pets") assert.NoError(t, err) for path := range testData {