Skip to content

framework-erp/ARP4G-mongodb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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实现互斥锁

Releases

No releases published

Packages

No packages published

Languages