Documentation ¶
Overview ¶
Package mongo is a REST Layer resource storage handler for MongoDB using mgo
Index ¶
- Variables
- type Handler
- func (m Handler) Clear(ctx context.Context, q *query.Query) (int, error)
- func (m Handler) Count(ctx context.Context, query *query.Query) (int, error)
- func (m Handler) Delete(ctx context.Context, item *resource.Item) error
- func (m Handler) Find(ctx context.Context, q *query.Query) (*resource.ItemList, error)
- func (m Handler) Insert(ctx context.Context, items []*resource.Item) error
- func (m Handler) Update(ctx context.Context, item *resource.Item, original *resource.Item) error
- type ObjectID
- type OptionalReference
- type Time
Constants ¶
This section is empty.
Variables ¶
var ( // NewObjectID is a field hook handler that generates a new Mongo ObjectID hex if // value is nil to be used in schema with OnInit. NewObjectID = func(ctx context.Context, value interface{}) interface{} { if value == nil { value = primitive.NewObjectID().Hex() } return value } // ObjectIDField is a common schema field configuration that generate an Object ID // for new item id. ObjectIDField = schema.Field{ Required: true, ReadOnly: true, OnInit: NewObjectID, Filterable: true, Sortable: true, Validator: &ObjectID{}, } )
var ( // Now is a field hook handler that returns the current time, to be used in // schema with OnInit and OnUpdate. Now = func(ctx context.Context, value interface{}) interface{} { return time.Now() } // CreatedField is a common schema field configuration for "created" fields. // It stores the creation date of the item. CreatedField = schema.Field{ Description: "The time at which the item has been inserted", Required: true, ReadOnly: true, OnInit: Now, Sortable: true, Filterable: true, Validator: &Time{}, } // UpdatedField is a common schema field configuration for "updated" fields. // It stores the current date each time the item is modified. UpdatedField = schema.Field{ Description: "The time at which the item has been last updated", Required: true, ReadOnly: true, OnInit: Now, OnUpdate: Now, Sortable: true, Filterable: true, Validator: &Time{}, } )
Functions ¶
This section is empty.
Types ¶
type Handler ¶
type Handler func(ctx context.Context) (*mongo.Collection, error)
Handler handles resource storage in a MongoDB collection.
func NewHandler ¶
NewHandler creates an new mongo handler
func (Handler) Clear ¶
Clear clears all items from the mongo collection matching the query. Note that when q.Window != nil, the current implementation may error if the BSON encoding of all matching IDs according to the q.Window length gets close to the maximum document size in MongDB (usually 16MiB): https://docs.mongodb.com/manual/reference/limits/#bson-documents
type ObjectID ¶
type ObjectID struct{}
ObjectID validates and serialize unique id
func (ObjectID) BuildJSONSchema ¶
BuildJSONSchema implements the jsonschema.Builder interface.
type OptionalReference ¶ added in v1.7.0
type OptionalReference struct { Path string SchemaValidator schema.Validator // contains filtered or unexported fields }
OptionalReference validates the ID of a linked resource.
func (*OptionalReference) Compile ¶ added in v1.7.0
func (r *OptionalReference) Compile(rc schema.ReferenceChecker) error
Compile validates v.Path against rc and stores the a FieldValidator for later use by v.Validate.
func (OptionalReference) GetField ¶ added in v1.7.0
func (r OptionalReference) GetField(name string) *schema.Field
GetField implements the FieldGetter interface.
func (OptionalReference) Validate ¶ added in v1.7.0
func (r OptionalReference) Validate(value interface{}) (interface{}, error)
Validate validates and sanitizes IDs against the reference path.
type Time ¶
type Time struct { TimeLayouts []string // TimeLayouts is set of time layouts we want to validate. // contains filtered or unexported fields }
Time validates time based values
func (*Time) Compile ¶
func (v *Time) Compile(rc schema.ReferenceChecker) error
Compile the time formats.
func (Time) ValidateQuery ¶
ValidateQuery implements schema.FieldQueryValidator interface