34 lines
1.5 KiB
Go
34 lines
1.5 KiB
Go
package user
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/SamuelTariku/FortuneBet-Backend/internal/domain"
|
|
)
|
|
|
|
type UserStore interface {
|
|
CreateUser(ctx context.Context, user domain.User, usedOtpId int64) (domain.User, error)
|
|
CreateUserWithoutOtp(ctx context.Context, user domain.User) (domain.User, error)
|
|
GetUserByID(ctx context.Context, id int64) (domain.User, error)
|
|
GetAllUsers(ctx context.Context, filter Filter) ([]domain.User, error)
|
|
GetAllCashiers(ctx context.Context) ([]domain.User, error)
|
|
GetCashiersByBranch(ctx context.Context, branchID int64) ([]domain.User, error)
|
|
UpdateUser(ctx context.Context, user domain.UpdateUserReq) error
|
|
DeleteUser(ctx context.Context, id int64) error
|
|
CheckPhoneEmailExist(ctx context.Context, phoneNum, email string) (bool, bool, error)
|
|
GetUserByEmail(ctx context.Context, email string) (domain.User, error)
|
|
GetUserByPhone(ctx context.Context, phoneNum string) (domain.User, error)
|
|
SearchUserByNameOrPhone(ctx context.Context, searchString string) ([]domain.User, error)
|
|
UpdatePassword(ctx context.Context, identifier string, password []byte, usedOtpId int64) error // identifier verified email or phone
|
|
}
|
|
type SmsGateway interface {
|
|
SendSMSOTP(ctx context.Context, phoneNumber, otp string) error
|
|
}
|
|
type EmailGateway interface {
|
|
SendEmailOTP(ctx context.Context, email string, otp string) error
|
|
}
|
|
type OtpStore interface {
|
|
CreateOtp(ctx context.Context, otp domain.Otp) error
|
|
GetOtp(ctx context.Context, sentTo string, sentfor domain.OtpFor, medium domain.OtpMedium) (domain.Otp, error)
|
|
}
|