From a518a51f72e8b104fac09996136d5833f1300cf3 Mon Sep 17 00:00:00 2001 From: Benedikt Kulmann Date: Fri, 23 Oct 2020 12:55:01 +0200 Subject: [PATCH] Extract creating indices on the indexer into a function --- accounts/pkg/service/v0/index.go | 55 ++++++++++++++++++++++++++++++ accounts/pkg/service/v0/service.go | 40 +--------------------- 2 files changed, 56 insertions(+), 39 deletions(-) diff --git a/accounts/pkg/service/v0/index.go b/accounts/pkg/service/v0/index.go index 94653b41cb..a0eeedce24 100644 --- a/accounts/pkg/service/v0/index.go +++ b/accounts/pkg/service/v0/index.go @@ -3,13 +3,68 @@ package service import ( "context" + "github.com/owncloud/ocis/accounts/pkg/config" + "github.com/owncloud/ocis/accounts/pkg/indexer" + "github.com/owncloud/ocis/accounts/pkg/indexer/option" "github.com/owncloud/ocis/accounts/pkg/proto/v0" ) +// RebuildIndex deletes all indices (in memory and on storage) and rebuilds them from scratch. func (s Service) RebuildIndex(ctx context.Context, request *proto.RebuildIndexRequest, response *proto.RebuildIndexResponse) error { if err := s.index.Reset(); err != nil { return err } response.Indices = []string{"foo", "bar"} + + if err := createIndices(s.index, s.Config); err != nil { + return err + } + + // TODO: read all the documents and add them to the indexer. + + return nil +} + +// createIndices adds all indices to the indexer that we have for this service. +func createIndices(idx *indexer.Indexer, cfg *config.Config) error { + // Accounts + if err := idx.AddIndex(&proto.Account{}, "DisplayName", "Id", "accounts", "non_unique", nil, true); err != nil { + return err + } + if err := idx.AddIndex(&proto.Account{}, "Mail", "Id", "accounts", "unique", nil, true); err != nil { + return err + } + + if err := idx.AddIndex(&proto.Account{}, "OnPremisesSamAccountName", "Id", "accounts", "unique", nil, true); err != nil { + return err + } + + if err := idx.AddIndex(&proto.Account{}, "PreferredName", "Id", "accounts", "unique", nil, true); err != nil { + return err + } + + if err := idx.AddIndex(&proto.Account{}, "UidNumber", "Id", "accounts", "autoincrement", &option.Bound{ + Lower: cfg.Index.UID.Lower, + Upper: cfg.Index.UID.Upper, + }, false); err != nil { + return err + } + + // Groups + if err := idx.AddIndex(&proto.Group{}, "OnPremisesSamAccountName", "Id", "groups", "unique", nil, true); err != nil { + return err + } + + if err := idx.AddIndex(&proto.Group{}, "DisplayName", "Id", "groups", "non_unique", nil, true); err != nil { + return err + } + + if err := idx.AddIndex(&proto.Group{}, "GidNumber", "Id", "groups", "autoincrement", &option.Bound{ + Lower: cfg.Index.GID.Lower, + Upper: cfg.Index.GID.Upper, + }, false); err != nil { + return err + } + return nil } diff --git a/accounts/pkg/service/v0/service.go b/accounts/pkg/service/v0/service.go index 99152690e4..01ce8be166 100644 --- a/accounts/pkg/service/v0/service.go +++ b/accounts/pkg/service/v0/service.go @@ -9,8 +9,6 @@ import ( "strings" "time" - "github.com/owncloud/ocis/accounts/pkg/indexer/option" - "github.com/owncloud/ocis/accounts/pkg/indexer" "github.com/owncloud/ocis/accounts/pkg/storage" @@ -77,45 +75,9 @@ func New(opts ...Option) (s *Service, err error) { func (s Service) buildIndex() (*indexer.Indexer, error) { idx := indexer.CreateIndexer(s.Config) - // Accounts - if err := idx.AddIndex(&proto.Account{}, "DisplayName", "Id", "accounts", "non_unique", nil, true); err != nil { + if err := createIndices(idx, s.Config); err != nil { return nil, err } - if err := idx.AddIndex(&proto.Account{}, "Mail", "Id", "accounts", "unique", nil, true); err != nil { - return nil, err - } - - if err := idx.AddIndex(&proto.Account{}, "OnPremisesSamAccountName", "Id", "accounts", "unique", nil, true); err != nil { - return nil, err - } - - if err := idx.AddIndex(&proto.Account{}, "PreferredName", "Id", "accounts", "unique", nil, true); err != nil { - return nil, err - } - - if err := idx.AddIndex(&proto.Account{}, "UidNumber", "Id", "accounts", "autoincrement", &option.Bound{ - Lower: s.Config.Index.UID.Lower, - Upper: s.Config.Index.UID.Upper, - }, false); err != nil { - return nil, err - } - - // Groups - if err := idx.AddIndex(&proto.Group{}, "OnPremisesSamAccountName", "Id", "groups", "unique", nil, true); err != nil { - return nil, err - } - - if err := idx.AddIndex(&proto.Group{}, "DisplayName", "Id", "groups", "non_unique", nil, true); err != nil { - return nil, err - } - - if err := idx.AddIndex(&proto.Group{}, "GidNumber", "Id", "groups", "autoincrement", &option.Bound{ - Lower: s.Config.Index.GID.Lower, - Upper: s.Config.Index.GID.Upper, - }, false); err != nil { - return nil, err - } - return idx, nil }