Documentation
¶
Index ¶
- Variables
- type BulkCreateDto
- type BulkDeleteDto
- type CommitDto
- type Controller
- func (x *Controller) BulkCreate(ctx context.Context, c *app.RequestContext)
- func (x *Controller) BulkDelete(ctx context.Context, c *app.RequestContext)
- func (x *Controller) Commit(ctx context.Context, c *app.RequestContext)
- func (x *Controller) Create(ctx context.Context, c *app.RequestContext)
- func (x *Controller) Delete(ctx context.Context, c *app.RequestContext)
- func (x *Controller) Find(ctx context.Context, c *app.RequestContext)
- func (x *Controller) FindById(ctx context.Context, c *app.RequestContext)
- func (x *Controller) FindOne(ctx context.Context, c *app.RequestContext)
- func (x *Controller) Replace(ctx context.Context, c *app.RequestContext)
- func (x *Controller) Size(ctx context.Context, c *app.RequestContext)
- func (x *Controller) Sort(ctx context.Context, c *app.RequestContext)
- func (x *Controller) Transaction(ctx context.Context, c *app.RequestContext)
- func (x *Controller) Update(ctx context.Context, c *app.RequestContext)
- func (x *Controller) UpdateById(ctx context.Context, c *app.RequestContext)
- type CreateDto
- type DeleteDto
- type FindByIdDto
- type FindDto
- type FindOneDto
- type M
- type Option
- func SetDatabase(v *mongo.Database) Option
- func SetDynamicValues(v *values.DynamicValues) Option
- func SetJetStream(v nats.JetStreamContext) Option
- func SetKeyValue(v nats.KeyValue) Option
- func SetMongoClient(v *mongo.Client) Option
- func SetNamespace(v string) Option
- func SetRedis(v *redis.Client) Option
- type PendingDto
- type PublishDto
- type ReplaceDto
- type Service
- func (x *Service) BulkCreate(ctx context.Context, name string, docs []interface{}) (r interface{}, err error)
- func (x *Service) BulkDelete(ctx context.Context, name string, filter M) (r interface{}, err error)
- func (x *Service) Commit(ctx context.Context, txn string) (_ interface{}, err error)
- func (x *Service) Create(ctx context.Context, name string, doc M) (r interface{}, err error)
- func (x *Service) Delete(ctx context.Context, name string, id primitive.ObjectID) (r interface{}, err error)
- func (x *Service) Find(ctx context.Context, name string, filter M, option *options.FindOptions) (data []M, err error)
- func (x *Service) FindOne(ctx context.Context, name string, filter M, option *options.FindOneOptions) (data M, err error)
- func (x *Service) Invoke(ctx context.Context, dto PendingDto) (_ interface{}, _ error)
- func (x *Service) IsForbid(name string) bool
- func (x *Service) Pending(ctx context.Context, txn string, dto PendingDto) (err error)
- func (x *Service) Pipe(input M, paths []string, kind interface{}) (err error)
- func (x *Service) Projection(name string, keys []string) (result bson.M)
- func (x *Service) Publish(ctx context.Context, name string, dto PublishDto) (err error)
- func (x *Service) Replace(ctx context.Context, name string, id primitive.ObjectID, doc M) (r interface{}, err error)
- func (x *Service) Size(ctx context.Context, name string, filter M) (_ int64, err error)
- func (x *Service) Sort(ctx context.Context, name string, key string, ids []primitive.ObjectID) (r interface{}, err error)
- func (x *Service) Transaction(ctx context.Context, txn string)
- func (x *Service) Transform(data M, rules M) (err error)
- func (x *Service) TxnNotExists(ctx context.Context, key string) (err error)
- func (x *Service) Update(ctx context.Context, name string, filter M, update M) (r interface{}, err error)
- func (x *Service) UpdateById(ctx context.Context, name string, id primitive.ObjectID, update M) (r interface{}, err error)
- type SizeDto
- type SortDto
- type SortDtoData
- type UpdateByIdDto
- type UpdateDto
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrCollectionForbidden = errors.NewPublic("the collection is forbidden")
View Source
var ErrTxnNotExist = errors.NewPublic("the txn does not exist")
View Source
var ErrTxnTimeOut = errors.NewPublic("the transaction has timed out")
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'"`
Xdata M `json:"xdata"`
Txn string `json:"txn"`
}
type BulkDeleteDto ¶
type BulkDeleteDto struct {
Collection string `path:"collection,required" vd:"regexp('^[a-z_]+$');msg:'the collection name must be lowercase letters with underscores'"`
Filter M `json:"filter,required" vd:"len($)>0;msg:'the filter cannot be empty'"`
Xfilter M `json:"xfilter"`
Txn string `json:"txn"`
}
type Controller ¶
type Controller struct {
*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) Commit ¶
func (x *Controller) Commit(ctx context.Context, c *app.RequestContext)
Commit @router /commit [POST]
func (*Controller) Create ¶
func (x *Controller) Create(ctx context.Context, c *app.RequestContext)
Create @router /:collection/create [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/find [POST]
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/fine_one [POST]
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 [POST]
func (*Controller) Sort ¶
func (x *Controller) Sort(ctx context.Context, c *app.RequestContext)
Sort @router /:collection/sort [POST]
func (*Controller) Transaction ¶
func (x *Controller) Transaction(ctx context.Context, c *app.RequestContext)
Transaction @router /transaction [POST]
func (*Controller) Update ¶
func (x *Controller) Update(ctx context.Context, c *app.RequestContext)
Update @router /:collection/update [POST]
func (*Controller) UpdateById ¶
func (x *Controller) UpdateById(ctx context.Context, c *app.RequestContext)
UpdateById @router /:collection/:id [PATCH]
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 `json:"filter,required"`
Xfilter M `json:"xfilter"`
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 `json:"filter,required" vd:"len($)>0;msg:'the filter cannot be empty'"`
Xfilter M `json:"xfilter"`
Keys []string `query:"keys" vd:"range($,regexp('^[a-z_]+$',#v));msg:'the projection rules are not standardized'"`
}
type Option ¶
type Option func(x *Service)
func SetDatabase ¶
func SetDynamicValues ¶
func SetDynamicValues(v *values.DynamicValues) Option
func SetJetStream ¶
func SetJetStream(v nats.JetStreamContext) Option
func SetKeyValue ¶
func SetMongoClient ¶
func SetNamespace ¶
type PendingDto ¶
type PublishDto ¶
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'"`
Xdata M `json:"xdata"`
Txn string `json:"txn"`
}
type Service ¶
type Service struct {
Namespace string
Mgo *mongo.Client
Db *mongo.Database
RDb *redis.Client
JetStream nats.JetStreamContext
KeyValue nats.KeyValue
Values *values.DynamicValues
}
func (*Service) BulkCreate ¶
func (*Service) BulkDelete ¶
func (*Service) Invoke ¶
func (x *Service) Invoke(ctx context.Context, dto PendingDto) (_ interface{}, _ error)
func (*Service) Projection ¶
func (*Service) TxnNotExists ¶
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 SortDtoData `json:"data,required"`
Txn string `json:"txn"`
}
type SortDtoData ¶
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'"`
Xdata M `json:"xdata"`
Txn string `json:"txn"`
}
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 `json:"filter,required" vd:"len($)>0;msg:'the filter cannot be empty'"`
Xfilter M `json:"xfilter"`
Data M `json:"data,required" vd:"len($)>0;msg:'the update cannot be empty'"`
Xdata M `json:"xdata"`
Txn string `json:"txn"`
}
Click to show internal directories.
Click to hide internal directories.