template-monorepo/internal/model/member/repository/index.go

52 lines
1.6 KiB
Go
Raw Normal View History

2026-05-20 23:51:22 +00:00
package repository
import (
"context"
"fmt"
libmongo "gateway/internal/library/mongo"
)
const bsonOpSet = "$set"
2026-05-20 23:51:22 +00:00
// EnsureMongoIndexes creates indexes for member module collections.
func EnsureMongoIndexes(ctx context.Context, conf *libmongo.Conf) error {
if conf == nil || conf.Host == "" {
return nil
}
if err := ensureMemberIndexes(ctx, conf); err != nil {
return err
}
if err := ensureTenantIndexes(ctx, conf); err != nil {
return err
}
return ensureIdentityIndexes(ctx, conf)
}
func ensureMemberIndexes(ctx context.Context, conf *libmongo.Conf) error {
//nolint:contextcheck // repository ctor pings Mongo at startup without caller ctx
repo, ok := NewMemberRepository(MemberRepositoryParam{Conf: conf}).(*memberRepository)
if !ok {
return fmt.Errorf("member: unexpected repository type")
}
return repo.Index20260520001UP(ctx)
}
func ensureTenantIndexes(ctx context.Context, conf *libmongo.Conf) error {
//nolint:contextcheck // repository ctor pings Mongo at startup without caller ctx
repo, ok := NewTenantRepository(TenantRepositoryParam{Conf: conf}).(*tenantRepository)
if !ok {
return fmt.Errorf("member: unexpected tenant repository type")
}
return repo.Index20260520001UP(ctx)
}
func ensureIdentityIndexes(ctx context.Context, conf *libmongo.Conf) error {
//nolint:contextcheck // repository ctor pings Mongo at startup without caller ctx
repo, ok := NewIdentityRepository(IdentityRepositoryParam{Conf: conf}).(*identityRepository)
if !ok {
return fmt.Errorf("member: unexpected identity repository type")
}
return repo.Index20260520001UP(ctx)
}