31 lines
973 B
Go
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"),
|
|
}
|
|
}
|