ARP4G-mongodb

module
v0.0.0-...-4ca6748 Latest Latest
Warning

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

Go to latest
Published: Nov 14, 2022 License: Apache-2.0

README

ARP4G-mongodb

这是ARP4G的MongoDB实现。

功能

  1. 实现基于MongoDB的持久化
  2. 实现基于MongoDB的互斥锁

如何使用

//定义仓库
type OrderRepository interface {
	Take(ctx context.Context, id any) (order *Order, found bool)
}

//定义Service
type OrderService struct {
	orderRepository OrderRepository
}

//获得mongodb客户端
mongoClient, err := mongo.Connect(context.Background(), options.Client().ApplyURI(
	"mongodb://localhost:27017/orders"))
if err != nil {
	panic(err)
}

//生成仓库的mongodb实现
mongoOrderRepo := mongorepo.NewMongodbRepository(mongoClient, "orders", "Order", func() *Order { return &Order{} })

//使用仓库生成Service
orderService := &OrderService{mongoOrderRepo}

这里使用NewMongodbRepository打包生成了MongoDB的仓库实现,仓库会使用MongoDB持久化,也会用MongoDB实现互斥锁。

func NewMongodbRepositoryWithMutexesimpl[T any](client *mongo.Client, database string, collection string, newEmptyEntity arp.NewZeroEntity[T], mutexesimpl arp.Mutexes) arp.QueryRepository[T]

也可以使用NewMongodbRepositoryWithMutexesimpl函数选择不同的互斥锁实现,比如,持久化到MongoDB,但是用Redis实现互斥锁

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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