Files
sxchnge/backend/pkg/db/internal/mongo/invitationdb/indexes.go
T

31 lines
973 B
Go

package invitationdb
import (
"git.sendico.io/tech/sxchnge/bff/pkg/db/repository"
"git.sendico.io/tech/sxchnge/bff/pkg/db/repository/builder"
ri "git.sendico.io/tech/sxchnge/bff/pkg/db/repository/index"
"git.sendico.io/tech/sxchnge/bff/pkg/model"
)
const uniquePendingInvitationEmailIndexName = "unique_pending_invitation_email_per_org"
func pendingInvitationEmailIndexDefinition() *ri.Definition {
statusValues := model.PendingInvitationStatusValues()
statuses := make([]any, 0, len(statusValues))
for _, status := range statusValues {
statuses = append(statuses, status)
}
return &ri.Definition{
Keys: []ri.Key{
{Field: repository.OrgField().Build(), Sort: ri.Asc},
{Field: "description.email", Sort: ri.Asc},
},
Unique: true,
Name: uniquePendingInvitationEmailIndexName,
PartialFilter: repository.Query().
In(repository.Field("status"), statuses...).
Comparison(repository.Field("description.email"), builder.Type, "string"),
}
}