db.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package manager
  2. import (
  3. "fmt"
  4. "time"
  5. "github.com/boltdb/bolt"
  6. . "github.com/tuna/tunasync/internal"
  7. )
  8. type dbAdapter interface {
  9. Init() error
  10. ListWorkers() ([]WorkerStatus, error)
  11. GetWorker(workerID string) (WorkerStatus, error)
  12. DeleteWorker(workerID string) error
  13. CreateWorker(w WorkerStatus) (WorkerStatus, error)
  14. RefreshWorker(workerID string) (WorkerStatus, error)
  15. UpdateMirrorStatus(workerID, mirrorID string, status MirrorStatus) (MirrorStatus, error)
  16. GetMirrorStatus(workerID, mirrorID string) (MirrorStatus, error)
  17. ListMirrorStatus(workerID string) ([]MirrorStatus, error)
  18. ListAllMirrorStatus() ([]MirrorStatus, error)
  19. FlushDisabledJobs() error
  20. Close() error
  21. }
  22. func makeDBAdapter(dbType string, dbFile string) (dbAdapter, error) {
  23. if dbType == "bolt" {
  24. innerDB, err := bolt.Open(dbFile, 0600, &bolt.Options{
  25. Timeout: 5 * time.Second,
  26. })
  27. if err != nil {
  28. return nil, err
  29. }
  30. db := boltAdapter{
  31. db: innerDB,
  32. dbFile: dbFile,
  33. }
  34. err = db.Init()
  35. return &db, err
  36. }
  37. // unsupported db-type
  38. return nil, fmt.Errorf("unsupported db-type: %s", dbType)
  39. }