types.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package kvdb
  2. import "errors"
  3. var (
  4. // ErrUserNotFound is returned when a user doesn't exist
  5. ErrUserNotFound = errors.New("user not found")
  6. // ErrUserAlreadyExists is returned when trying to create a user that already exists
  7. ErrUserAlreadyExists = errors.New("user already exists")
  8. )
  9. // User represents a user in the system
  10. type User struct {
  11. AccessKeyID string `json:"access_key_id"`
  12. SecretAccessKey string `json:"secret_access_key"`
  13. AccountID string `json:"account_id"`
  14. Username string `json:"username"`
  15. Email string `json:"email"`
  16. }
  17. // KVDB defines the interface for key-value database operations
  18. type KVDB interface {
  19. // User operations
  20. GetUser(accessKeyID string) (*User, error)
  21. CreateUser(user *User) error
  22. UpdateUser(user *User) error
  23. DeleteUser(accessKeyID string) error
  24. ListUsers() ([]*User, error)
  25. // User validation
  26. ValidateCredentials(accessKeyID, secretAccessKey string) (*User, error)
  27. // Bucket operations
  28. ResolveBucketName(bucketName string) (accountID string, bucketID string, err error)
  29. GetBucketConfig(accountID, bucketID string) (*BucketConfig, error)
  30. // Close the database
  31. Close() error
  32. }