270 lines
6.4 KiB
Go
270 lines
6.4 KiB
Go
package repository
|
|
|
|
import (
|
|
"github.com/tech/sendico/pkg/db/internal/mongo/repositoryimp/builderimp"
|
|
"github.com/tech/sendico/pkg/db/repository/builder"
|
|
"github.com/tech/sendico/pkg/db/storable"
|
|
"github.com/tech/sendico/pkg/model"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
func Query() builder.Query {
|
|
return builderimp.NewQueryImp()
|
|
}
|
|
|
|
func Filter(field string, value any) builder.Query {
|
|
return Query().Filter(Field(field), value)
|
|
}
|
|
|
|
func Field(baseName string) builder.Field {
|
|
return builderimp.NewFieldImp(baseName)
|
|
}
|
|
|
|
func Ref(field builder.Field) builder.Field {
|
|
return builderimp.NewRefFieldImp(field)
|
|
}
|
|
|
|
func RootRef() builder.Field {
|
|
return builderimp.NewRootRef()
|
|
}
|
|
|
|
func RemoveRef() builder.Field {
|
|
return builderimp.NewRemoveRef()
|
|
}
|
|
|
|
func Pipeline() builder.Pipeline {
|
|
return builderimp.NewPipelineImp()
|
|
}
|
|
|
|
func IDField() builder.Field {
|
|
return Field(storable.IDField)
|
|
}
|
|
|
|
func NameField() builder.Field {
|
|
return Field(model.NameField)
|
|
}
|
|
|
|
func DescrtiptionField() builder.Field {
|
|
return Field(model.DescriptionField)
|
|
}
|
|
|
|
func IsArchivedField() builder.Field {
|
|
return Field(storable.IsArchivedField)
|
|
}
|
|
|
|
func IDFilter(ref primitive.ObjectID) builder.Query {
|
|
return Query().Filter(IDField(), ref)
|
|
}
|
|
|
|
func ArchivedFilter() builder.Query {
|
|
return IsArchivedFilter(true)
|
|
}
|
|
|
|
func NotArchivedFilter() builder.Query {
|
|
return IsArchivedFilter(false)
|
|
}
|
|
|
|
func IsArchivedFilter(isArchived bool) builder.Query {
|
|
return Query().Filter(IsArchivedField(), isArchived)
|
|
}
|
|
|
|
func OrgField() builder.Field {
|
|
return Field(storable.OrganizationRefField)
|
|
}
|
|
|
|
func OrgFilter(ref primitive.ObjectID) builder.Query {
|
|
return Query().Filter(OrgField(), ref)
|
|
}
|
|
|
|
func ProjectField() builder.Field {
|
|
return Field("projectRef")
|
|
}
|
|
|
|
func ProjectFilter(ref primitive.ObjectID) builder.Query {
|
|
return Query().Filter(ProjectField(), ref)
|
|
}
|
|
|
|
func AccountField() builder.Field {
|
|
return Field(model.AccountRefField)
|
|
}
|
|
|
|
func AccountFilter(ref primitive.ObjectID) builder.Query {
|
|
return Query().Filter(AccountField(), ref)
|
|
}
|
|
|
|
func StatusRefField() builder.Field {
|
|
return Field("statusRef")
|
|
}
|
|
|
|
func StatusRefFilter(ref primitive.ObjectID) builder.Query {
|
|
return Query().Filter(StatusRefField(), ref)
|
|
}
|
|
|
|
func PriorityRefField() builder.Field {
|
|
return Field("priorityRef")
|
|
}
|
|
|
|
func PriorityRefFilter(ref primitive.ObjectID) builder.Query {
|
|
return Query().Filter(PriorityRefField(), ref)
|
|
}
|
|
|
|
func IndexField() builder.Field {
|
|
return Field("index")
|
|
}
|
|
|
|
func IndexFilter(index int) builder.Query {
|
|
return Query().Filter(IndexField(), index)
|
|
}
|
|
|
|
func IndexOpFilter(index int, operation builder.MongoOperation) builder.Query {
|
|
return Query().Comparison(IndexField(), operation, index)
|
|
}
|
|
|
|
func Patch() builder.Patch {
|
|
return builderimp.NewPatchImp()
|
|
}
|
|
|
|
func Accumulator(operator builder.MongoOperation, value any) builder.Accumulator {
|
|
return builderimp.NewAccumulator(operator, value)
|
|
}
|
|
|
|
func GroupAccumulator(field builder.Field, acc builder.Accumulator) builder.GroupAccumulator {
|
|
return builderimp.NewGroupAccumulator(field, acc)
|
|
}
|
|
|
|
func Literal(value any) builder.Expression {
|
|
return builderimp.NewLiteralExpression(value)
|
|
}
|
|
|
|
func Projection(alias builder.Alias) builder.Projection {
|
|
return builderimp.NewAliasProjection(alias)
|
|
}
|
|
|
|
func IncludeField(field builder.Field) builder.Projection {
|
|
return builderimp.IncludeField(field)
|
|
}
|
|
|
|
func ExcludeField(field builder.Field) builder.Projection {
|
|
return builderimp.ExcludeField(field)
|
|
}
|
|
|
|
func ProjectionExpr(field builder.Field, expr builder.Expression) builder.Projection {
|
|
return builderimp.NewProjectionExpr(field, expr)
|
|
}
|
|
|
|
func NullAlias(lhs builder.Field) builder.Alias {
|
|
return builderimp.NewNullAlias(lhs)
|
|
}
|
|
|
|
func SimpleAlias(lhs, rhs builder.Field) builder.Alias {
|
|
return builderimp.NewSimpleAlias(lhs, rhs)
|
|
}
|
|
|
|
func ComplexAlias(lhs builder.Field, rhs []builder.Alias) builder.Alias {
|
|
return builderimp.NewComplexAlias(lhs, rhs)
|
|
}
|
|
|
|
func Aliases(aliases ...builder.Alias) builder.Alias {
|
|
return builderimp.NewAliases(aliases...)
|
|
}
|
|
|
|
func AddToSet(value builder.Expression) builder.Expression {
|
|
return builderimp.AddToSet(value)
|
|
}
|
|
|
|
func Size(value builder.Expression) builder.Expression {
|
|
return builderimp.Size(value)
|
|
}
|
|
|
|
func InRef(value builder.Field) builder.Expression {
|
|
return builderimp.InRef(value)
|
|
}
|
|
|
|
func In(values ...any) builder.Expression {
|
|
return builderimp.In(values)
|
|
}
|
|
|
|
func Cond(condition builder.Expression, ifTrue, ifFalse any) builder.Expression {
|
|
return builderimp.NewCond(condition, ifTrue, ifFalse)
|
|
}
|
|
|
|
func And(exprs ...builder.Expression) builder.Expression {
|
|
return builderimp.NewAnd(exprs...)
|
|
}
|
|
|
|
func Or(exprs ...builder.Expression) builder.Expression {
|
|
return builderimp.NewOr(exprs...)
|
|
}
|
|
|
|
func Type(expr builder.Expression) builder.Expression {
|
|
return builderimp.NewType(expr)
|
|
}
|
|
|
|
func Not(expression builder.Expression) builder.Expression {
|
|
return builderimp.NewNot(expression)
|
|
}
|
|
|
|
func Sum(expression builder.Expression) builder.Expression {
|
|
return builderimp.NewSum(expression)
|
|
}
|
|
|
|
func Assign(field builder.Field, expression builder.Expression) builder.Projection {
|
|
return builderimp.NewAssignment(field, expression)
|
|
}
|
|
|
|
func SetUnion(exprs ...builder.Expression) builder.Expression {
|
|
return builderimp.NewSetUnion(exprs...)
|
|
}
|
|
|
|
func Eq(left, right builder.Expression) builder.Expression {
|
|
return builderimp.Eq(left, right)
|
|
}
|
|
|
|
func Gt(left, right builder.Expression) builder.Expression {
|
|
return builderimp.Gt(left, right)
|
|
}
|
|
|
|
func Lt(left, right builder.Expression) builder.Expression {
|
|
return builderimp.NewLt(left, right)
|
|
}
|
|
|
|
func Array(expressions ...builder.Expression) builder.Array {
|
|
return builderimp.NewArray(expressions...)
|
|
}
|
|
|
|
func IfNull(cond, replacement builder.Expression) builder.Expression {
|
|
return builderimp.NewIfNull(cond, replacement)
|
|
}
|
|
|
|
func Each(exprs ...builder.Expression) builder.Expression {
|
|
return builderimp.NewEach(exprs...)
|
|
}
|
|
|
|
func Push(expression builder.Expression) builder.Expression {
|
|
return builderimp.NewPush(expression)
|
|
}
|
|
|
|
func Min(expression builder.Expression) builder.Expression {
|
|
return builderimp.NewMin(expression)
|
|
}
|
|
|
|
func Ne(left, right builder.Expression) builder.Expression {
|
|
return builderimp.Ne(left, right)
|
|
}
|
|
|
|
func Compute(field builder.Field, expression builder.Expression) builder.Expression {
|
|
return builderimp.NewCompute(field, expression)
|
|
}
|
|
|
|
func First(expr builder.Expression) builder.Expression {
|
|
return builderimp.First(expr)
|
|
}
|
|
|
|
func Value(value any) builder.Value {
|
|
return builderimp.NewValue(value)
|
|
}
|
|
|
|
func Exists(field builder.Field, exists bool) builder.Query {
|
|
return Query().Comparison(field, builder.Exists, exists)
|
|
}
|