storage.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package stores
  2. import (
  3. "excalidraw-complete/core"
  4. "excalidraw-complete/stores/aws"
  5. "excalidraw-complete/stores/filesystem"
  6. "excalidraw-complete/stores/memory"
  7. "excalidraw-complete/stores/sqlite"
  8. "os"
  9. "github.com/sirupsen/logrus"
  10. )
  11. func GetStore() core.DocumentStore {
  12. storageType := os.Getenv("STORAGE_TYPE")
  13. var store core.DocumentStore
  14. storageField := logrus.Fields{
  15. "storageType": storageType,
  16. }
  17. switch storageType {
  18. case "filesystem":
  19. basePath := os.Getenv("LOCAL_STORAGE_PATH")
  20. storageField["basePath"] = basePath
  21. store = filesystem.NewDocumentStore(basePath)
  22. case "sqlite":
  23. dataSourceName := os.Getenv("DATA_SOURCE_NAME")
  24. storageField["dataSourceName"] = dataSourceName
  25. store = sqlite.NewDocumentStore(dataSourceName)
  26. case "s3":
  27. bucketName := os.Getenv("S3_BUCKET_NAME")
  28. storageField["bucketName"] = bucketName
  29. store = aws.NewDocumentStore(bucketName)
  30. default:
  31. store = memory.NewDocumentStore()
  32. storageField["storageType"] = "in-memory"
  33. }
  34. logrus.WithFields(storageField).Info("Use storage")
  35. return store
  36. }