Help us shape the future of Go! Take the 2026 Go Developer Survey

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