Documentation ¶
Index ¶
- Constants
- Variables
- func WithAuth(ctx context.Context, auth Authorization) context.Context
- func WithAuthFailure(ctx context.Context, err error) context.Context
- type APIKeyInfo
- type APIKeys
- type Authorization
- type BucketUsage
- type BucketUsageCursor
- type BucketUsagePage
- type BucketUsageRollup
- type CreateUser
- type DB
- type DBTx
- type Pagination
- type Project
- type ProjectInfo
- type ProjectInvoiceStamp
- type ProjectInvoiceStamps
- type ProjectMember
- type ProjectMemberOrder
- type ProjectMembers
- type ProjectPayment
- type ProjectPayments
- type ProjectUsage
- type Projects
- type RegistrationSecret
- type RegistrationToken
- type RegistrationTokens
- type ResetPasswordSecret
- type ResetPasswordToken
- type ResetPasswordTokens
- type Service
- func (s *Service) ActivateAccount(ctx context.Context, activationToken string) (err error)
- func (s *Service) AddProjectMembers(ctx context.Context, projectID uuid.UUID, emails []string) (users []*User, err error)
- func (s *Service) Authorize(ctx context.Context) (a Authorization, err error)
- func (s *Service) ChangePassword(ctx context.Context, pass, newPass string) (err error)
- func (s *Service) CreateAPIKey(ctx context.Context, projectID uuid.UUID, name string) (_ *APIKeyInfo, _ *macaroon.APIKey, err error)
- func (s *Service) CreateMonthlyProjectInvoices(ctx context.Context, date time.Time) (err error)
- func (s *Service) CreateProject(ctx context.Context, projectInfo ProjectInfo) (p *Project, err error)
- func (s *Service) CreateRegToken(ctx context.Context, projLimit int) (_ *RegistrationToken, err error)
- func (s *Service) CreateUser(ctx context.Context, user CreateUser, tokenSecret RegistrationSecret) (u *User, err error)
- func (s *Service) DeleteAPIKeys(ctx context.Context, ids []uuid.UUID) (err error)
- func (s *Service) DeleteAccount(ctx context.Context, password string) (err error)
- func (s *Service) DeleteProject(ctx context.Context, projectID uuid.UUID) (err error)
- func (s *Service) DeleteProjectMembers(ctx context.Context, projectID uuid.UUID, emails []string) (err error)
- func (s *Service) GenerateActivationToken(ctx context.Context, id uuid.UUID, email string) (token string, err error)
- func (s *Service) GeneratePasswordRecoveryToken(ctx context.Context, id uuid.UUID) (token string, err error)
- func (s *Service) GetAPIKeyInfo(ctx context.Context, id uuid.UUID) (_ *APIKeyInfo, err error)
- func (s *Service) GetAPIKeysInfoByProjectID(ctx context.Context, projectID uuid.UUID) (info []APIKeyInfo, err error)
- func (s *Service) GetBucketTotals(ctx context.Context, projectID uuid.UUID, cursor BucketUsageCursor, ...) (_ *BucketUsagePage, err error)
- func (s *Service) GetBucketUsageRollups(ctx context.Context, projectID uuid.UUID, since, before time.Time) (_ []BucketUsageRollup, err error)
- func (s *Service) GetProject(ctx context.Context, projectID uuid.UUID) (p *Project, err error)
- func (s *Service) GetProjectMembers(ctx context.Context, projectID uuid.UUID, pagination Pagination) (pm []ProjectMember, err error)
- func (s *Service) GetProjectUsage(ctx context.Context, projectID uuid.UUID, since, before time.Time) (_ *ProjectUsage, err error)
- func (s *Service) GetUser(ctx context.Context, id uuid.UUID) (u *User, err error)
- func (s *Service) GetUserByEmail(ctx context.Context, email string) (u *User, err error)
- func (s *Service) GetUserCreditUsage(ctx context.Context) (usage *UserCreditUsage, err error)
- func (s *Service) GetUsersProjects(ctx context.Context) (ps []Project, err error)
- func (s *Service) ResetPassword(ctx context.Context, resetPasswordToken, password string) (err error)
- func (s *Service) RevokeResetPasswordToken(ctx context.Context, resetPasswordToken string) (err error)
- func (s *Service) Token(ctx context.Context, email, password string) (token string, err error)
- func (s *Service) UpdateAccount(ctx context.Context, info UserInfo) (err error)
- func (s *Service) UpdateProject(ctx context.Context, projectID uuid.UUID, description string) (p *Project, err error)
- type Signer
- type UsageRollups
- type User
- type UserCredit
- type UserCreditUsage
- type UserCredits
- type UserInfo
- type UserPayment
- type UserPayments
- type UserStatus
- type Users
Constants ¶
const ( // DefaultPasswordCost is the hashing complexity DefaultPasswordCost = bcrypt.DefaultCost // TestPasswordCost is the hashing complexity to use for testing TestPasswordCost = bcrypt.MinCost )
Variables ¶
var ErrNoMembership = errs.Class("no membership error")
ErrNoMembership is error type of not belonging to a specific project
ErrUnauthorized is error class for authorization related errors
var ErrValidation = errs.Class("validation error")
ErrValidation validation related error class
Functions ¶
Types ¶
type APIKeyInfo ¶
type APIKeyInfo struct { ID uuid.UUID `json:"id"` ProjectID uuid.UUID `json:"projectId"` Name string `json:"name"` Secret []byte `json:"-"` CreatedAt time.Time `json:"createdAt"` }
APIKeyInfo describing api key model in the database
type APIKeys ¶
type APIKeys interface { // GetByProjectID retrieves list of APIKeys for given projectID GetByProjectID(ctx context.Context, projectID uuid.UUID) ([]APIKeyInfo, error) // Get retrieves APIKeyInfo with given ID Get(ctx context.Context, id uuid.UUID) (*APIKeyInfo, error) // GetByHead retrieves APIKeyInfo for given key head GetByHead(ctx context.Context, head []byte) (*APIKeyInfo, error) // Create creates and stores new APIKeyInfo Create(ctx context.Context, head []byte, info APIKeyInfo) (*APIKeyInfo, error) // Update updates APIKeyInfo in store Update(ctx context.Context, key APIKeyInfo) error // Delete deletes APIKeyInfo from store Delete(ctx context.Context, id uuid.UUID) error }
APIKeys is interface for working with api keys store
type Authorization ¶
type Authorization struct { User User Claims consoleauth.Claims }
Authorization contains auth info of authorized User
type BucketUsage ¶ added in v0.12.0
type BucketUsage struct { ProjectID uuid.UUID BucketName string Storage float64 Egress float64 ObjectCount int64 Since time.Time Before time.Time }
BucketUsage consist of total bucket usage for period
type BucketUsageCursor ¶ added in v0.12.0
BucketUsageCursor holds info for bucket usage cursor pagination
type BucketUsagePage ¶ added in v0.12.0
type BucketUsagePage struct { BucketUsages []BucketUsage Search string Limit uint Offset uint64 PageCount uint CurrentPage uint TotalCount uint64 }
BucketUsagePage represents bucket usage page result
type BucketUsageRollup ¶ added in v0.9.0
type BucketUsageRollup struct { ProjectID uuid.UUID BucketName []byte RemoteStoredData float64 InlineStoredData float64 RemoteSegments float64 InlineSegments float64 ObjectCount float64 MetadataSize float64 RepairEgress float64 GetEgress float64 AuditEgress float64 Since time.Time Before time.Time }
BucketUsageRollup is total bucket usage info for certain period
type CreateUser ¶
CreateUser struct holds info for User creation.
func (*CreateUser) IsValid ¶
func (user *CreateUser) IsValid() error
IsValid checks CreateUser validity and returns error describing whats wrong.
type DB ¶
type DB interface { // Users is a getter for Users repository Users() Users // Projects is a getter for Projects repository Projects() Projects // ProjectMembers is a getter for ProjectMembers repository ProjectMembers() ProjectMembers // APIKeys is a getter for APIKeys repository APIKeys() APIKeys // BucketUsage is a getter for accounting.BucketUsage repository BucketUsage() accounting.BucketUsage // RegistrationTokens is a getter for RegistrationTokens repository RegistrationTokens() RegistrationTokens // ResetPasswordTokens is a getter for ResetPasswordTokens repository ResetPasswordTokens() ResetPasswordTokens // UsageRollups is a getter for UsageRollups repository UsageRollups() UsageRollups // UserCredits is a getter for UserCredits repository UserCredits() UserCredits // UserPayments is a getter for UserPayments repository UserPayments() UserPayments // ProjectPayments is a getter for ProjectPayments repository ProjectPayments() ProjectPayments // ProjectInvoiceStamps is a getter for ProjectInvoiceStamps repository ProjectInvoiceStamps() ProjectInvoiceStamps // BeginTransaction is a method for opening transaction BeginTx(ctx context.Context) (DBTx, error) }
DB contains access to different satellite databases
type DBTx ¶
type DBTx interface { DB // CommitTransaction is a method for committing and closing transaction Commit() error // RollbackTransaction is a method for rollback and closing transaction Rollback() error }
DBTx extends Database with transaction scope
type Pagination ¶
type Pagination struct { Limit int Offset int64 Search string Order ProjectMemberOrder }
Pagination defines pagination, filtering and sorting rules
type Project ¶
type Project struct { ID uuid.UUID `json:"id"` Name string `json:"name"` Description string `json:"description"` UsageLimit int64 `json:"usageLimit"` CreatedAt time.Time `json:"createdAt"` }
Project is a database object that describes Project entity
type ProjectInfo ¶
type ProjectInfo struct { Name string `json:"name"` Description string `json:"description"` CreatedAt time.Time `json:"createdAt"` }
ProjectInfo holds data needed to create/update Project
type ProjectInvoiceStamp ¶ added in v0.13.0
type ProjectInvoiceStamp struct { ProjectID uuid.UUID InvoiceID []byte StartDate time.Time EndDate time.Time CreatedAt time.Time }
ProjectInvoiceStamp stores a reference of an invoice created on payments service side. Used to help prevent double invoicing and to connect an invoice with console project
type ProjectInvoiceStamps ¶ added in v0.13.0
type ProjectInvoiceStamps interface { Create(ctx context.Context, stamp ProjectInvoiceStamp) (*ProjectInvoiceStamp, error) GetByProjectIDStartDate(ctx context.Context, projectID uuid.UUID, startDate time.Time) (*ProjectInvoiceStamp, error) GetAll(ctx context.Context, projectID uuid.UUID) ([]ProjectInvoiceStamp, error) }
ProjectInvoiceStamps exposes methods to manage ProjectInvoiceStamp table in database
type ProjectMember ¶
type ProjectMember struct { // FK on Users table. MemberID uuid.UUID // FK on Projects table. ProjectID uuid.UUID CreatedAt time.Time }
ProjectMember is a database object that describes ProjectMember entity.
type ProjectMemberOrder ¶
type ProjectMemberOrder int8
ProjectMemberOrder is used for querying project members in specified order
const ( // Name indicates that we should order by full name Name ProjectMemberOrder = 1 // Email indicates that we should order by email Email ProjectMemberOrder = 2 // Created indicates that we should order by created date Created ProjectMemberOrder = 3 )
type ProjectMembers ¶
type ProjectMembers interface { // GetByMemberID is a method for querying project members from the database by memberID. GetByMemberID(ctx context.Context, memberID uuid.UUID) ([]ProjectMember, error) // GetByProjectID is a method for querying project members from the database by projectID, offset and limit. GetByProjectID(ctx context.Context, projectID uuid.UUID, pagination Pagination) ([]ProjectMember, error) // Insert is a method for inserting project member into the database. Insert(ctx context.Context, memberID, projectID uuid.UUID) (*ProjectMember, error) // Delete is a method for deleting project member by memberID and projectID from the database. Delete(ctx context.Context, memberID, projectID uuid.UUID) error }
ProjectMembers exposes methods to manage ProjectMembers table in database.
type ProjectPayment ¶ added in v0.13.0
type ProjectPayment struct { ProjectID uuid.UUID PayerID uuid.UUID PaymentMethodID []byte CreatedAt time.Time }
ProjectPayment contains project payment info
type ProjectPayments ¶ added in v0.13.0
type ProjectPayments interface { Create(ctx context.Context, info ProjectPayment) (*ProjectPayment, error) GetByProjectID(ctx context.Context, projectID uuid.UUID) (*ProjectPayment, error) GetByPayerID(ctx context.Context, payerID uuid.UUID) (*ProjectPayment, error) }
ProjectPayments is project payment infos store interface
type ProjectUsage ¶ added in v0.9.0
type ProjectUsage struct { Storage float64 Egress float64 ObjectCount float64 Since time.Time Before time.Time }
ProjectUsage consist of period total storage, egress and objects count per hour for certain Project
type Projects ¶
type Projects interface { // GetAll is a method for querying all projects from the database. GetAll(ctx context.Context) ([]Project, error) // GetCreatedBefore retrieves all projects created before provided date GetCreatedBefore(ctx context.Context, before time.Time) ([]Project, error) // GetByUserID is a method for querying all projects from the database by userID. GetByUserID(ctx context.Context, userID uuid.UUID) ([]Project, error) // Get is a method for querying project from the database by id. Get(ctx context.Context, id uuid.UUID) (*Project, error) // Insert is a method for inserting project into the database. Insert(ctx context.Context, project *Project) (*Project, error) // Delete is a method for deleting project by Id from the database. Delete(ctx context.Context, id uuid.UUID) error // Update is a method for updating project entity. Update(ctx context.Context, project *Project) error }
Projects exposes methods to manage Project table in database.
type RegistrationSecret ¶
type RegistrationSecret [32]byte
RegistrationSecret stores secret of registration token
func NewRegistrationSecret ¶
func NewRegistrationSecret() (RegistrationSecret, error)
NewRegistrationSecret creates new registration secret
func RegistrationSecretFromBase64 ¶
func RegistrationSecretFromBase64(s string) (RegistrationSecret, error)
RegistrationSecretFromBase64 creates new registration secret from base64 string
func (RegistrationSecret) String ¶
func (secret RegistrationSecret) String() string
String implements Stringer
type RegistrationToken ¶
type RegistrationToken struct { // Secret is PK of the table and keeps unique value forRegToken Secret RegistrationSecret // OwnerID stores current token owner ID OwnerID *uuid.UUID // ProjectLimit defines how many projects user is able to create ProjectLimit int `json:"projectLimit"` CreatedAt time.Time `json:"createdAt"` }
RegistrationToken describing api key model in the database
type RegistrationTokens ¶
type RegistrationTokens interface { // Create creates new registration token Create(ctx context.Context, projectLimit int) (*RegistrationToken, error) // GetBySecret retrieves RegTokenInfo with given Secret GetBySecret(ctx context.Context, secret RegistrationSecret) (*RegistrationToken, error) // GetByOwnerID retrieves RegTokenInfo by ownerID GetByOwnerID(ctx context.Context, ownerID uuid.UUID) (*RegistrationToken, error) // UpdateOwner updates registration token's owner UpdateOwner(ctx context.Context, secret RegistrationSecret, ownerID uuid.UUID) error }
RegistrationTokens is interface for working with registration tokens
type ResetPasswordSecret ¶ added in v0.12.0
type ResetPasswordSecret [32]byte
ResetPasswordSecret stores secret of registration token
func NewResetPasswordSecret ¶ added in v0.12.0
func NewResetPasswordSecret() (ResetPasswordSecret, error)
NewResetPasswordSecret creates new reset password secret
func ResetPasswordSecretFromBase64 ¶ added in v0.12.0
func ResetPasswordSecretFromBase64(s string) (ResetPasswordSecret, error)
ResetPasswordSecretFromBase64 creates new reset password secret from base64 string
func (ResetPasswordSecret) String ¶ added in v0.12.0
func (secret ResetPasswordSecret) String() string
String implements Stringer
type ResetPasswordToken ¶ added in v0.12.0
type ResetPasswordToken struct { // Secret is PK of the table and keeps unique value for reset password token Secret ResetPasswordSecret // OwnerID stores current token owner ID OwnerID *uuid.UUID CreatedAt time.Time `json:"createdAt"` }
ResetPasswordToken describing reset password model in the database
type ResetPasswordTokens ¶ added in v0.12.0
type ResetPasswordTokens interface { // Create creates new reset password token Create(ctx context.Context, ownerID uuid.UUID) (*ResetPasswordToken, error) // GetBySecret retrieves ResetPasswordToken with given secret GetBySecret(ctx context.Context, secret ResetPasswordSecret) (*ResetPasswordToken, error) // GetByOwnerID retrieves ResetPasswordToken by ownerID GetByOwnerID(ctx context.Context, ownerID uuid.UUID) (*ResetPasswordToken, error) // Delete deletes ResetPasswordToken by ResetPasswordSecret Delete(ctx context.Context, secret ResetPasswordSecret) error }
ResetPasswordTokens is interface for working with reset password tokens
type Service ¶
type Service struct { Signer // contains filtered or unexported fields }
Service is handling accounts related logic
func NewService ¶
func NewService(log *zap.Logger, signer Signer, store DB, pm payments.Service, passwordCost int) (*Service, error)
NewService returns new instance of Service
func (*Service) ActivateAccount ¶
ActivateAccount - is a method for activating user account after registration
func (*Service) AddProjectMembers ¶
func (s *Service) AddProjectMembers(ctx context.Context, projectID uuid.UUID, emails []string) (users []*User, err error)
AddProjectMembers adds users by email to given project
func (*Service) Authorize ¶
func (s *Service) Authorize(ctx context.Context) (a Authorization, err error)
Authorize validates token from context and returns authorized Authorization
func (*Service) ChangePassword ¶
ChangePassword updates password for a given user
func (*Service) CreateAPIKey ¶
func (s *Service) CreateAPIKey(ctx context.Context, projectID uuid.UUID, name string) (_ *APIKeyInfo, _ *macaroon.APIKey, err error)
CreateAPIKey creates new api key
func (*Service) CreateMonthlyProjectInvoices ¶ added in v0.13.0
CreateMonthlyProjectInvoices creates invoices for all created projects on monthly basis. Edge Dates are derived from the date parameter taking UTC year and month, then adding first and last date of the month accordingly
func (*Service) CreateProject ¶
func (s *Service) CreateProject(ctx context.Context, projectInfo ProjectInfo) (p *Project, err error)
CreateProject is a method for creating new project
func (*Service) CreateRegToken ¶
func (s *Service) CreateRegToken(ctx context.Context, projLimit int) (_ *RegistrationToken, err error)
CreateRegToken creates new registration token. Needed for testing
func (*Service) CreateUser ¶
func (s *Service) CreateUser(ctx context.Context, user CreateUser, tokenSecret RegistrationSecret) (u *User, err error)
CreateUser gets password hash value and creates new inactive User
func (*Service) DeleteAPIKeys ¶
DeleteAPIKeys deletes api key by id
func (*Service) DeleteAccount ¶
DeleteAccount deletes User
func (*Service) DeleteProject ¶
DeleteProject is a method for deleting project by id
func (*Service) DeleteProjectMembers ¶
func (s *Service) DeleteProjectMembers(ctx context.Context, projectID uuid.UUID, emails []string) (err error)
DeleteProjectMembers removes users by email from given project
func (*Service) GenerateActivationToken ¶
func (s *Service) GenerateActivationToken(ctx context.Context, id uuid.UUID, email string) (token string, err error)
GenerateActivationToken - is a method for generating activation token
func (*Service) GeneratePasswordRecoveryToken ¶ added in v0.10.0
func (s *Service) GeneratePasswordRecoveryToken(ctx context.Context, id uuid.UUID) (token string, err error)
GeneratePasswordRecoveryToken - is a method for generating password recovery token
func (*Service) GetAPIKeyInfo ¶
GetAPIKeyInfo retrieves api key by id
func (*Service) GetAPIKeysInfoByProjectID ¶
func (s *Service) GetAPIKeysInfoByProjectID(ctx context.Context, projectID uuid.UUID) (info []APIKeyInfo, err error)
GetAPIKeysInfoByProjectID retrieves all api keys for a given project
func (*Service) GetBucketTotals ¶ added in v0.12.0
func (s *Service) GetBucketTotals(ctx context.Context, projectID uuid.UUID, cursor BucketUsageCursor, before time.Time) (_ *BucketUsagePage, err error)
GetBucketTotals retrieves paged bucket total usages since project creation
func (*Service) GetBucketUsageRollups ¶ added in v0.9.0
func (s *Service) GetBucketUsageRollups(ctx context.Context, projectID uuid.UUID, since, before time.Time) (_ []BucketUsageRollup, err error)
GetBucketUsageRollups retrieves summed usage rollups for every bucket of particular project for a given period
func (*Service) GetProject ¶
GetProject is a method for querying project by id
func (*Service) GetProjectMembers ¶
func (s *Service) GetProjectMembers(ctx context.Context, projectID uuid.UUID, pagination Pagination) (pm []ProjectMember, err error)
GetProjectMembers returns ProjectMembers for given Project
func (*Service) GetProjectUsage ¶ added in v0.9.0
func (s *Service) GetProjectUsage(ctx context.Context, projectID uuid.UUID, since, before time.Time) (_ *ProjectUsage, err error)
GetProjectUsage retrieves project usage for a given period
func (*Service) GetUserByEmail ¶ added in v0.10.0
GetUserByEmail returns User by email
func (*Service) GetUserCreditUsage ¶ added in v0.14.0
func (s *Service) GetUserCreditUsage(ctx context.Context) (usage *UserCreditUsage, err error)
GetUserCreditUsage is a method for querying users' credit information up until now
func (*Service) GetUsersProjects ¶
GetUsersProjects is a method for querying all projects
func (*Service) ResetPassword ¶ added in v0.10.0
func (s *Service) ResetPassword(ctx context.Context, resetPasswordToken, password string) (err error)
ResetPassword - is a method for reseting user password
func (*Service) RevokeResetPasswordToken ¶ added in v0.12.0
func (s *Service) RevokeResetPasswordToken(ctx context.Context, resetPasswordToken string) (err error)
RevokeResetPasswordToken - is a method to revoke reset password token
func (*Service) UpdateAccount ¶
UpdateAccount updates User
type UsageRollups ¶ added in v0.9.0
type UsageRollups interface { GetProjectTotal(ctx context.Context, projectID uuid.UUID, since, before time.Time) (*ProjectUsage, error) GetBucketUsageRollups(ctx context.Context, projectID uuid.UUID, since, before time.Time) ([]BucketUsageRollup, error) GetBucketTotals(ctx context.Context, projectID uuid.UUID, cursor BucketUsageCursor, since, before time.Time) (*BucketUsagePage, error) }
UsageRollups defines how console works with usage rollups
type User ¶
type User struct { ID uuid.UUID `json:"id"` FullName string `json:"fullName"` ShortName string `json:"shortName"` Email string `json:"email"` PasswordHash []byte `json:"passwordHash"` Status UserStatus `json:"status"` CreatedAt time.Time `json:"createdAt"` }
User is a database object that describes User entity.
type UserCredit ¶ added in v0.14.0
type UserCredit struct { ID int UserID uuid.UUID OfferID int ReferredBy uuid.UUID CreditsEarnedInCents int CreditsUsedInCents int ExpiresAt time.Time CreatedAt time.Time }
UserCredit holds information about an user's credit
type UserCreditUsage ¶ added in v0.14.0
UserCreditUsage holds information about credit usage information
type UserCredits ¶ added in v0.14.0
type UserCredits interface { GetCreditUsage(ctx context.Context, userID uuid.UUID, expirationEndDate time.Time) (*UserCreditUsage, error) Create(ctx context.Context, userCredit UserCredit) (*UserCredit, error) UpdateAvailableCredits(ctx context.Context, creditsToCharge int, id uuid.UUID, billingStartDate time.Time) (remainingCharge int, err error) }
UserCredits holds information to interact with database
type UserInfo ¶
type UserInfo struct { FullName string `json:"fullName"` ShortName string `json:"shortName"` Email string `json:"email"` }
UserInfo holds User updatable data.
type UserPayment ¶ added in v0.13.0
UserPayment represents user payment information
type UserPayments ¶ added in v0.13.0
type UserPayments interface { Create(ctx context.Context, info UserPayment) (*UserPayment, error) Get(ctx context.Context, userID uuid.UUID) (*UserPayment, error) }
UserPayments is user payment infos store
type UserStatus ¶
type UserStatus int
UserStatus - is used to indicate status of the users account
const ( // Inactive is a user status that he receives after registration Inactive UserStatus = 0 // Active is a user status that he receives after account activation Active UserStatus = 1 // Deleted is a user status that he receives after deleting account Deleted UserStatus = 2 )
type Users ¶
type Users interface { // Get is a method for querying user from the database by id. Get(ctx context.Context, id uuid.UUID) (*User, error) // GetByEmail is a method for querying user by email from the database. GetByEmail(ctx context.Context, email string) (*User, error) // Insert is a method for inserting user into the database. Insert(ctx context.Context, user *User) (*User, error) // Delete is a method for deleting user by Id from the database. Delete(ctx context.Context, id uuid.UUID) error // Update is a method for updating user entity. Update(ctx context.Context, user *User) error }
Users exposes methods to manage User table in database.