-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgorp_lock_factory.go
37 lines (30 loc) · 1 KB
/
gorp_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
36
37
package gorp_locks
import (
"database/sql"
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"
"gopkg.in/gorp.v1"
)
// GorpLockFactory gorp的锁工厂,可以创建好多锁啥的
type GorpLockFactory struct {
dbMap *gorp.DbMap
*storage_lock_factory.StorageLockFactory[*sql.DB]
}
// NewGorpLockFactory 从*gorp.DbMap中创建
func NewGorpLockFactory(dbMap *gorp.DbMap) (*GorpLockFactory, error) {
connectionManager := NewGorpConnectionManager(dbMap)
gorpStorage, err := CreateStorageForGorp(dbMap)
if err != nil {
return nil, err
}
factory := storage_lock_factory.NewStorageLockFactory[*sql.DB](gorpStorage, connectionManager)
return &GorpLockFactory{
dbMap: dbMap,
StorageLockFactory: factory,
}, nil
}
// CreateStorageForGorp 尝试从gorp创建Storage
func CreateStorageForGorp(dbMap *gorp.DbMap) (storage.Storage, error) {
return sqldb_storage.NewStorage(dbMap.Db)
}