instance.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package dps
  2. import (
  3. "git.sxidc.com/service-supports/dps-sdk/client"
  4. "git.sxidc.com/service-supports/fslog"
  5. "sync"
  6. )
  7. var dpsClientMutex sync.Mutex
  8. var dpsClient client.Client
  9. func InitInstance(address string, clientVersion string, databaseID string) error {
  10. dpsClientMutex.Lock()
  11. defer dpsClientMutex.Unlock()
  12. if dpsClient == nil {
  13. return nil
  14. }
  15. c, err := NewClient(address, clientVersion, databaseID)
  16. if err != nil {
  17. return err
  18. }
  19. dpsClient = c
  20. return nil
  21. }
  22. func DestroyInstance(clientVersion string, databaseID string) error {
  23. dpsClientMutex.Lock()
  24. defer dpsClientMutex.Unlock()
  25. err := DestroyClient(clientVersion, databaseID)
  26. if err != nil {
  27. return err
  28. }
  29. dpsClient = nil
  30. return nil
  31. }
  32. func AutoMigrate(items ...client.AutoMigrateItem) error {
  33. if items == nil || len(items) == 0 {
  34. return nil
  35. }
  36. dpsClientMutex.Lock()
  37. defer dpsClientMutex.Unlock()
  38. if dpsClient == nil {
  39. return nil
  40. }
  41. return dpsClient.AutoMigrate(&client.AutoMigrateRequest{Items: items})
  42. }
  43. func Transaction(txFunc client.TransactionFunc) error {
  44. dpsClientMutex.Lock()
  45. defer dpsClientMutex.Unlock()
  46. if dpsClient == nil {
  47. return nil
  48. }
  49. return dpsClient.Transaction(txFunc)
  50. }
  51. func EndTransaction(tx client.Transaction) {
  52. dpsClientMutex.Lock()
  53. defer dpsClientMutex.Unlock()
  54. if dpsClient == nil {
  55. return
  56. }
  57. err := tx.End()
  58. if err != nil {
  59. fslog.Error("!!!!!!!!! END TRANSACTION" + err.Error() + "!!!!!!!!!")
  60. return
  61. }
  62. }