package builder

import (
	"go.mongodb.org/mongo-driver/v2/bson"
	"go.mongodb.org/mongo-driver/v2/mongo/options"
)

type Query interface {
	Filter(field Field, value any) Query
	And(filters ...Query) Query
	Or(filters ...Query) Query
	Expression(value Expression) Query
	Comparison(field Field, operator MongoOperation, value any) Query
	RegEx(field Field, pattern, options string) Query
	In(field Field, values ...any) Query
	NotIn(field Field, values ...any) Query
	Sort(field Field, ascending bool) Query
	Limit(limit *int64) Query
	Offset(offset *int64) Query
	Archived(isArchived *bool) Query
	BuildPipeline() bson.D
	BuildQuery() bson.D
	BuildOptions() *options.FindOptionsBuilder
}
