-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbeego_lock_factory.go
35 lines (28 loc) · 997 Bytes
/
beego_lock_factory.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package beego_locks
import (
"database/sql"
"github.com/beego/beego/orm"
sqldb_storage "github.com/storage-lock/go-sqldb-storage"
"github.com/storage-lock/go-storage"
storage_lock_factory "github.com/storage-lock/go-storage-lock-factory"
)
type BeegoLockFactory struct {
db *orm.DB
*storage_lock_factory.StorageLockFactory[*sql.DB]
}
func NewBeegoLockFactory(db *orm.DB) (*BeegoLockFactory, error) {
connectionManager := NewBeegoConnectionManager(db)
storage, err := CreateStorageForBeego(db, connectionManager)
if err != nil {
return nil, err
}
factory := storage_lock_factory.NewStorageLockFactory[*sql.DB](storage, connectionManager)
return &BeegoLockFactory{
db: db,
StorageLockFactory: factory,
}, nil
}
// CreateStorageForBeego 尝试从beego orm创建Storage
func CreateStorageForBeego(db *orm.DB, connectionManager storage.ConnectionManager[*sql.DB]) (storage.Storage, error) {
return sqldb_storage.NewStorageBySqlDb(db.DB, connectionManager)
}