local.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package persistence
  2. import (
  3. "os"
  4. "path"
  5. )
  6. type LocalWrapper struct {
  7. path string
  8. }
  9. func NewLocalWrapper(path string) *LocalWrapper {
  10. // check if the path exists, create it if not
  11. if _, err := os.Stat(path); os.IsNotExist(err) {
  12. os.MkdirAll(path, 0755)
  13. }
  14. return &LocalWrapper{
  15. path: path,
  16. }
  17. }
  18. func (l *LocalWrapper) getFilePath(tenant_id string, plugin_checksum string, key string) string {
  19. return path.Join(l.path, tenant_id, plugin_checksum, key)
  20. }
  21. func (l *LocalWrapper) Save(tenant_id string, plugin_checksum string, key string, data []byte) error {
  22. // create the directory if it doesn't exist
  23. dir := l.getFilePath(tenant_id, plugin_checksum, "")
  24. if err := os.MkdirAll(dir, 0755); err != nil {
  25. return err
  26. }
  27. file_path := l.getFilePath(tenant_id, plugin_checksum, key)
  28. return os.WriteFile(file_path, data, 0644)
  29. }
  30. func (l *LocalWrapper) Load(tenant_id string, plugin_checksum string, key string) ([]byte, error) {
  31. file_path := l.getFilePath(tenant_id, plugin_checksum, key)
  32. return os.ReadFile(file_path)
  33. }
  34. func (l *LocalWrapper) Delete(tenant_id string, plugin_checksum string, key string) error {
  35. file_path := l.getFilePath(tenant_id, plugin_checksum, key)
  36. return os.Remove(file_path)
  37. }
  38. func (l *LocalWrapper) StateSize(tenant_id string, plugin_checksum string, key string) (int64, error) {
  39. file_path := l.getFilePath(tenant_id, plugin_checksum, key)
  40. info, err := os.Stat(file_path)
  41. if err != nil {
  42. return 0, err
  43. }
  44. return info.Size(), nil
  45. }