resource.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package store
  2. import (
  3. "context"
  4. )
  5. type Resource struct {
  6. ID int32
  7. // Standard fields
  8. CreatorID int32
  9. CreatedTs int64
  10. UpdatedTs int64
  11. // Domain specific fields
  12. Filename string
  13. Blob []byte
  14. InternalPath string
  15. ExternalLink string
  16. Type string
  17. Size int64
  18. MemoID *int32
  19. }
  20. type FindResource struct {
  21. GetBlob bool
  22. ID *int32
  23. CreatorID *int32
  24. Filename *string
  25. MemoID *int32
  26. HasRelatedMemo bool
  27. Limit *int
  28. Offset *int
  29. }
  30. type UpdateResource struct {
  31. ID int32
  32. UpdatedTs *int64
  33. Filename *string
  34. InternalPath *string
  35. MemoID *int32
  36. Blob []byte
  37. }
  38. type DeleteResource struct {
  39. ID int32
  40. MemoID *int32
  41. }
  42. func (s *Store) CreateResource(ctx context.Context, create *Resource) (*Resource, error) {
  43. return s.driver.CreateResource(ctx, create)
  44. }
  45. func (s *Store) ListResources(ctx context.Context, find *FindResource) ([]*Resource, error) {
  46. return s.driver.ListResources(ctx, find)
  47. }
  48. func (s *Store) GetResource(ctx context.Context, find *FindResource) (*Resource, error) {
  49. resources, err := s.ListResources(ctx, find)
  50. if err != nil {
  51. return nil, err
  52. }
  53. if len(resources) == 0 {
  54. return nil, nil
  55. }
  56. return resources[0], nil
  57. }
  58. func (s *Store) UpdateResource(ctx context.Context, update *UpdateResource) (*Resource, error) {
  59. return s.driver.UpdateResource(ctx, update)
  60. }
  61. func (s *Store) DeleteResource(ctx context.Context, delete *DeleteResource) error {
  62. return s.driver.DeleteResource(ctx, delete)
  63. }