package dps import ( "git.sxidc.com/service-supports/dps-sdk/client" "git.sxidc.com/service-supports/fslog" "sync" ) var dpsClientMutex sync.Mutex var dpsClient client.Client func InitInstance(address string, clientVersion string, databaseID string) error { dpsClientMutex.Lock() defer dpsClientMutex.Unlock() if dpsClient == nil { return nil } c, err := NewClient(address, clientVersion, databaseID) if err != nil { return err } dpsClient = c return nil } func DestroyInstance(clientVersion string, databaseID string) error { dpsClientMutex.Lock() defer dpsClientMutex.Unlock() err := DestroyClient(clientVersion, databaseID) if err != nil { return err } dpsClient = nil return nil } func AutoMigrate(items ...client.AutoMigrateItem) error { if items == nil || len(items) == 0 { return nil } dpsClientMutex.Lock() defer dpsClientMutex.Unlock() if dpsClient == nil { return nil } return dpsClient.AutoMigrate(&client.AutoMigrateRequest{Items: items}) } func Transaction(txFunc client.TransactionFunc) error { dpsClientMutex.Lock() defer dpsClientMutex.Unlock() if dpsClient == nil { return nil } return dpsClient.Transaction(txFunc) } func EndTransaction(tx client.Transaction) { dpsClientMutex.Lock() defer dpsClientMutex.Unlock() if dpsClient == nil { return } err := tx.End() if err != nil { fslog.Error("!!!!!!!!! END TRANSACTION" + err.Error() + "!!!!!!!!!") return } }