package invitationdb import ( "context" "git.sendico.io/tech/sxchnge/bff/pkg/auth" "git.sendico.io/tech/sxchnge/bff/pkg/db/policy" ri "git.sendico.io/tech/sxchnge/bff/pkg/db/repository/index" "git.sendico.io/tech/sxchnge/bff/pkg/mlogger" "git.sendico.io/tech/sxchnge/bff/pkg/model" "git.sendico.io/tech/sxchnge/bff/pkg/mservice" "go.mongodb.org/mongo-driver/v2/mongo" "go.uber.org/zap" ) type InvitationDB struct { auth.ProtectedDBImp[*model.Invitation] } func Create( ctx context.Context, logger mlogger.Logger, enforcer auth.Enforcer, pdb policy.DB, db *mongo.Database, ) (*InvitationDB, error) { p, err := auth.CreateDBImp[*model.Invitation](ctx, logger, pdb, enforcer, mservice.Invitations, db) if err != nil { return nil, err } if err := p.DBImp.Repository.CreateIndex(pendingInvitationEmailIndexDefinition()); err != nil { p.DBImp.Logger.Error("Failed to create unique pending invitation email index", zap.Error(err)) return nil, err } // ttl index ttl := int32(0) // zero ttl means expiration on date preset when inserting data if err := p.DBImp.Repository.CreateIndex(&ri.Definition{ Keys: []ri.Key{{Field: "expiresAt", Sort: ri.Asc}}, TTL: &ttl, }); err != nil { p.DBImp.Logger.Error("Failed to create ttl index in the invitations", zap.Error(err)) return nil, err } return &InvitationDB{ProtectedDBImp: *p}, nil }