hamster

package module
v0.0.0-...-9ff0794 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2022 License: Apache-2.0 Imports: 3 Imported by: 0

README

Hamster - fluent MQL generator for Go

Hamster is in evolution.

Inspired by:

MQL Builder TODO:

  • Filter Builder
  • Sort Builder
  • Projection Builder
  • Update Builder
  • Aggregate Builder
  • Index Builder

Usage

Filter & Sort

Official-Filters-Builder

	import "github.com/sinksmell/hamster"

	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	defer cancel()
	client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://127.0.0.1:27017"))
	if err != nil {
		fmt.Println(err)
		return
	}

	opt := options.Find()
	filter := hamster.FilterDocBuilder.Gt("year", 2000).Type("imdb.rating", bsontype.Double.String()).Doc()
	sort := hamster.SortDocBuilder.OrderBy("year", hamster.SortDesc).OrderDescBy("imdb.rating").Doc()
	opt.SetSort(sort)
	opt.SetLimit(10)
	cursor, err := client.Database("sample_mflix").Collection("movies").Find(ctx, filter, opt)
	if err != nil {
		fmt.Println(err)
		return
	}

	type movie struct {
		Title string `bson:"title"`
		Year  int    `bson:"year"`
	}
	var data []movie
	defer cursor.Close(context.TODO())

License

Hamster is released under the Apache License.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// FilterDocBuilder is a builder for MQL filter document
	// https://www.mongodb.com/docs/drivers/java/sync/v4.6/fundamentals/builders/filters/#std-label-filters-builders
	// All filter operators category are:
	// Comparison
	// Logical
	// Arrays
	// Elements
	// Evaluation
	// Bitwise
	// Geospatial
	FilterDocBuilder = builder.Register(filterDocBuilder{}, filterDoc{}).(filterDocBuilder)
)
View Source
var (
	// projectDocBuilder is a builder for MQL project document
	ProjectDocBuilder = builder.Register(projectDocBuilder{}, projectDoc{}).(projectDocBuilder)
)
View Source
var (
	// SortDocBuilder is a singleton builder for sortDoc
	SortDocBuilder = builder.Register(sortDocBuilder{}, sortDoc{}).(sortDocBuilder)
)

Functions

This section is empty.

Types

type Bsoner

type Bsoner interface {
	ToM() primitive.M
	ToD() primitive.D
}

type FilterDocTextSearchOptions

type FilterDocTextSearchOptions struct {
	Language           *string `bson:"$language"`
	CaseSensitive      *bool   `bson:"$caseSensitive"`
	DiacriticSensitive *bool   `bson:"$diacriticSensitive"`
}

type OrderClause

type OrderClause int32

OrderClause is a sort order

const (
	// SortAsc is ascending sort order
	SortAsc OrderClause = 1
	// SortDesc is descending sort order
	SortDesc OrderClause = -1
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL