dsl

package
v0.0.10 Latest Latest
Warning

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

Go to latest
Published: Mar 8, 2023 License: BSD-3-Clause Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Provides = wire.NewSet(
	wire.Struct(new(Controller), "*"),
	wire.Struct(new(Service), "*"),
)

Functions

This section is empty.

Types

type BulkCreateDto

type BulkCreateDto struct {
	Collection string `path:"collection,required" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Data       []M    `json:"data,required" vd:"len($)>0 && range($,len(#v)>0);msg:'batch documents cannot have empty data'"`
	Format     M      `json:"format"`
}

type BulkDeleteDto

type BulkDeleteDto struct {
	Collection string `path:"collection,required" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Data       M      `json:"data,required" vd:"len($)>0;msg:'the filter cannot be empty'"`
	Format     M      `json:"format"`
}

type Controller

type Controller struct {
	Service *Service
}

func (*Controller) BulkCreate

func (x *Controller) BulkCreate(ctx context.Context, c *app.RequestContext)

BulkCreate @router /:collection/bulk-create [POST]

func (*Controller) BulkDelete

func (x *Controller) BulkDelete(ctx context.Context, c *app.RequestContext)

BulkDelete @router /:collection/bulk-delete [POST]

func (*Controller) Create

func (x *Controller) Create(ctx context.Context, c *app.RequestContext)

Create @router /:collection [POST]

func (*Controller) Delete

func (x *Controller) Delete(ctx context.Context, c *app.RequestContext)

Delete @router /:collection/:id [DELETE]

func (*Controller) Find

func (x *Controller) Find(ctx context.Context, c *app.RequestContext)

Find @router /:collection [GET]

func (*Controller) FindById

func (x *Controller) FindById(ctx context.Context, c *app.RequestContext)

FindById @router /:collection/:id [GET]

func (*Controller) FindOne

func (x *Controller) FindOne(ctx context.Context, c *app.RequestContext)

FindOne @router /:collection/_one [GET]

func (*Controller) Replace

func (x *Controller) Replace(ctx context.Context, c *app.RequestContext)

Replace @router /:collection/:id [PUT]

func (*Controller) Size

func (x *Controller) Size(ctx context.Context, c *app.RequestContext)

Size @router /:collection/_size [GET]

func (*Controller) Sort

func (x *Controller) Sort(ctx context.Context, c *app.RequestContext)

Sort @router /:collection/sort [POST]

func (*Controller) Update

func (x *Controller) Update(ctx context.Context, c *app.RequestContext)

Update @router /:collection [PATCH]

func (*Controller) UpdateById

func (x *Controller) UpdateById(ctx context.Context, c *app.RequestContext)

UpdateById @router /:collection/:id [PATCH]

type CreateDto

type CreateDto struct {
	Collection string `path:"collection" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Data       M      `json:"data,required" vd:"len($)>0;msg:'document cannot be empty data'"`
	Format     M      `json:"format"`
}

type DSL

type DSL struct {
	Namespace     string
	Db            *mongo.Database
	DynamicValues *kv.DynamicValues
	Js            nats.JetStreamContext
}

func New

func New(options ...Option) (x *DSL, err error)

type DeleteDto

type DeleteDto struct {
	Collection string `path:"collection,required" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Id         string `path:"id,required" vd:"mongoId($);msg:'the document id must be an ObjectId'"`
}

type FindByIdDto

type FindByIdDto struct {
	Collection string   `path:"collection,required" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Id         string   `path:"id,required" vd:"mongoId($);msg:'the document id must be an ObjectId'"`
	Keys       []string `query:"keys" vd:"range($,regexp('^[a-z_]+$',#v));msg:'the projection rules are not standardized'"`
}

type FindDto

type FindDto struct {
	Collection string   `path:"collection,required" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Pagesize   int64    `header:"x-pagesize" vd:"$>=0 && $<=1000;msg:'the number of pages must be between 1 and 1000'"`
	Page       int64    `header:"x-page" vd:"$>=0;msg:'the page number must be greater than 0'"`
	Filter     M        `query:"filter"`
	Format     M        `query:"format"`
	Sort       []string `query:"sort" vd:"range($,regexp('^[a-z_]+:(-1|1)$',#v)));msg:'the collation is not standardized'"`
	Keys       []string `query:"keys" vd:"range($,regexp('^[a-z_]+$',#v));msg:'the projection rules are not standardized'"`
}

type FindOneDto

type FindOneDto struct {
	Collection string   `path:"collection,required" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Filter     M        `query:"filter,required" vd:"len($)>0;msg:'the filter cannot be empty'"`
	Format     M        `query:"format"`
	Keys       []string `query:"keys" vd:"range($,regexp('^[a-z_]+$',#v));msg:'the projection rules are not standardized'"`
}

type M

type M = map[string]interface{}

type Option

type Option func(x *DSL)

func SetDatabase

func SetDatabase(v *mongo.Database) Option

func SetDynamicValues

func SetDynamicValues(v *kv.DynamicValues) Option

func SetJetStream

func SetJetStream(v nats.JetStreamContext) Option

func SetNamespace

func SetNamespace(v string) Option

type PublishDto

type PublishDto struct {
	Event  string      `json:"event"`
	Id     string      `json:"id,omitempty"`
	Filter M           `json:"filter,omitempty"`
	Data   interface{} `json:"data,omitempty"`
	Result interface{} `json:"result"`
}

type ReplaceDto

type ReplaceDto struct {
	Collection string `path:"collection,required" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Id         string `path:"id,required" vd:"mongoId($);msg:'the document id must be an ObjectId'"`
	Data       M      `json:"data,required" vd:"len($)>0;msg:'document cannot be empty data'"`
	Format     M      `json:"format"`
}

type Service

type Service struct {
	*DSL
}

func (*Service) BulkCreate

func (x *Service) BulkCreate(ctx context.Context, name string, docs []interface{}) (r interface{}, err error)

func (*Service) BulkDelete

func (x *Service) BulkDelete(ctx context.Context, name string, filter M) (r interface{}, err error)

func (*Service) Create

func (x *Service) Create(ctx context.Context, name string, doc M) (r interface{}, err error)

func (*Service) Delete

func (x *Service) Delete(ctx context.Context, name string, id primitive.ObjectID) (r interface{}, err error)

func (*Service) Find

func (x *Service) Find(ctx context.Context, name string, filter M, option *options.FindOptions) (data []M, err error)

func (*Service) FindOne

func (x *Service) FindOne(ctx context.Context, name string, filter M, option *options.FindOneOptions) (data M, err error)

func (*Service) Load

func (x *Service) Load(ctx context.Context) (err error)

func (*Service) Projection

func (x *Service) Projection(name string, keys []string) (result bson.M)

func (*Service) Publish

func (x *Service) Publish(ctx context.Context, name string, dto PublishDto) (err error)

func (*Service) Replace

func (x *Service) Replace(ctx context.Context, name string, id primitive.ObjectID, doc M) (r interface{}, err error)

func (*Service) Size

func (x *Service) Size(ctx context.Context, name string, filter M) (_ int64, err error)

func (*Service) Sort

func (x *Service) Sort(ctx context.Context, name string, ids []primitive.ObjectID) (r interface{}, err error)

func (*Service) Transform

func (x *Service) Transform(data M, format M) (err error)

func (*Service) Update

func (x *Service) Update(ctx context.Context, name string, filter M, update M) (r interface{}, err error)

func (*Service) UpdateById

func (x *Service) UpdateById(ctx context.Context, name string, id primitive.ObjectID, update M) (r interface{}, err error)

type SizeDto

type SizeDto struct {
	Collection string `path:"collection,required" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Filter     M      `query:"filter"`
	Format     M      `query:"format"`
}

type SortDto

type SortDto struct {
	Collection string               `path:"collection,required" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Data       []primitive.ObjectID `json:"data,required" vd:"len($)>0;msg:'the submission data must be an array of ObjectId'"`
}

type UpdateByIdDto

type UpdateByIdDto struct {
	Collection string `path:"collection,required" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Id         string `path:"id,required" vd:"mongoId($);msg:'the document id must be an ObjectId'"`
	Data       M      `json:"data,required" vd:"len($)>0;msg:'the update cannot be empty'"`
	Format     M      `json:"format"`
}

type UpdateDto

type UpdateDto struct {
	Collection string `path:"collection" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
	Filter     M      `query:"filter,required" vd:"len($)>0;msg:'the filter cannot be empty'"`
	FFormat    M      `query:"format"`
	Data       M      `json:"data,required" vd:"len($)>0;msg:'the update cannot be empty'"`
	DFormat    M      `json:"format"`
}

Jump to

Keyboard shortcuts

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