driver.go 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package store
  2. import (
  3. "context"
  4. "database/sql"
  5. exprv1 "google.golang.org/genproto/googleapis/api/expr/v1alpha1"
  6. "github.com/usememos/memos/plugin/filter"
  7. )
  8. // Driver is an interface for store driver.
  9. // It contains all methods that store database driver should implement.
  10. type Driver interface {
  11. GetDB() *sql.DB
  12. Close() error
  13. // MigrationHistory model related methods.
  14. FindMigrationHistoryList(ctx context.Context, find *FindMigrationHistory) ([]*MigrationHistory, error)
  15. UpsertMigrationHistory(ctx context.Context, upsert *UpsertMigrationHistory) (*MigrationHistory, error)
  16. // Activity model related methods.
  17. CreateActivity(ctx context.Context, create *Activity) (*Activity, error)
  18. ListActivities(ctx context.Context, find *FindActivity) ([]*Activity, error)
  19. // Resource model related methods.
  20. CreateResource(ctx context.Context, create *Resource) (*Resource, error)
  21. ListResources(ctx context.Context, find *FindResource) ([]*Resource, error)
  22. UpdateResource(ctx context.Context, update *UpdateResource) error
  23. DeleteResource(ctx context.Context, delete *DeleteResource) error
  24. // Memo model related methods.
  25. CreateMemo(ctx context.Context, create *Memo) (*Memo, error)
  26. ListMemos(ctx context.Context, find *FindMemo) ([]*Memo, error)
  27. UpdateMemo(ctx context.Context, update *UpdateMemo) error
  28. DeleteMemo(ctx context.Context, delete *DeleteMemo) error
  29. // MemoRelation model related methods.
  30. UpsertMemoRelation(ctx context.Context, create *MemoRelation) (*MemoRelation, error)
  31. ListMemoRelations(ctx context.Context, find *FindMemoRelation) ([]*MemoRelation, error)
  32. DeleteMemoRelation(ctx context.Context, delete *DeleteMemoRelation) error
  33. // WorkspaceSetting model related methods.
  34. UpsertWorkspaceSetting(ctx context.Context, upsert *WorkspaceSetting) (*WorkspaceSetting, error)
  35. ListWorkspaceSettings(ctx context.Context, find *FindWorkspaceSetting) ([]*WorkspaceSetting, error)
  36. DeleteWorkspaceSetting(ctx context.Context, delete *DeleteWorkspaceSetting) error
  37. // User model related methods.
  38. CreateUser(ctx context.Context, create *User) (*User, error)
  39. UpdateUser(ctx context.Context, update *UpdateUser) (*User, error)
  40. ListUsers(ctx context.Context, find *FindUser) ([]*User, error)
  41. DeleteUser(ctx context.Context, delete *DeleteUser) error
  42. // UserSetting model related methods.
  43. UpsertUserSetting(ctx context.Context, upsert *UserSetting) (*UserSetting, error)
  44. ListUserSettings(ctx context.Context, find *FindUserSetting) ([]*UserSetting, error)
  45. // IdentityProvider model related methods.
  46. CreateIdentityProvider(ctx context.Context, create *IdentityProvider) (*IdentityProvider, error)
  47. ListIdentityProviders(ctx context.Context, find *FindIdentityProvider) ([]*IdentityProvider, error)
  48. UpdateIdentityProvider(ctx context.Context, update *UpdateIdentityProvider) (*IdentityProvider, error)
  49. DeleteIdentityProvider(ctx context.Context, delete *DeleteIdentityProvider) error
  50. // Inbox model related methods.
  51. CreateInbox(ctx context.Context, create *Inbox) (*Inbox, error)
  52. ListInboxes(ctx context.Context, find *FindInbox) ([]*Inbox, error)
  53. UpdateInbox(ctx context.Context, update *UpdateInbox) (*Inbox, error)
  54. DeleteInbox(ctx context.Context, delete *DeleteInbox) error
  55. // Webhook model related methods.
  56. CreateWebhook(ctx context.Context, create *Webhook) (*Webhook, error)
  57. ListWebhooks(ctx context.Context, find *FindWebhook) ([]*Webhook, error)
  58. UpdateWebhook(ctx context.Context, update *UpdateWebhook) (*Webhook, error)
  59. DeleteWebhook(ctx context.Context, delete *DeleteWebhook) error
  60. // Reaction model related methods.
  61. UpsertReaction(ctx context.Context, create *Reaction) (*Reaction, error)
  62. ListReactions(ctx context.Context, find *FindReaction) ([]*Reaction, error)
  63. DeleteReaction(ctx context.Context, delete *DeleteReaction) error
  64. // Shortcut related methods.
  65. ConvertExprToSQL(ctx *filter.ConvertContext, expr *exprv1.Expr) error
  66. }