package container

import (
	"fmt"
	"github.com/go-xorm/xorm"
)

type DefaultTransactionHandlerFactory struct {
	// xorm.Engine
	engine *xorm.Engine
}

// 创建事务句柄工厂
// 参数:
// 1.xorm.Engine
// 返回值:
// 1.事务句柄工厂
// 异常:
// 1.xorm.Engine不能为空!
func NewDefaultTransactionHandlerFactory(engine *xorm.Engine) *DefaultTransactionHandlerFactory {
	if engine == nil {
		panic(fmt.Sprintf("xorm.Engine不能为空!"))
	}
	return &DefaultTransactionHandlerFactory{engine}
}

// @Reference LAPP_LF_MOM_BACKEND/container/TransactionHandlerFactory.Create
func (impl *DefaultTransactionHandlerFactory) Create() (TransactionHandler, error) {
	return NewTransactionHandler(impl.engine.NewSession())
}
