add user management functionality with OTP verification and consent handling, DI introduced
This commit is contained in:
70
internal/api/user/repo/user_repo.go
Normal file
70
internal/api/user/repo/user_repo.go
Normal file
@ -0,0 +1,70 @@
|
||||
package repo
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"git.logidex.ru/fakz9/logidex-id/internal/api/user/domain"
|
||||
db "git.logidex.ru/fakz9/logidex-id/internal/db/generated"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type userRepo struct {
|
||||
db db.DBTX
|
||||
}
|
||||
|
||||
func (u userRepo) VerifyUser(ctx context.Context, requestUuid string) (*db.User, error) {
|
||||
//TODO implement me
|
||||
|
||||
queries := db.New(u.db)
|
||||
uuidParsed, err := uuid.Parse(requestUuid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dbUser, err := queries.UpdateUserVerified(ctx, uuidParsed)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &dbUser, nil
|
||||
}
|
||||
|
||||
func (u userRepo) GetUserByUuid(ctx context.Context, requestUuid string) (*db.User, error) {
|
||||
queries := db.New(u.db)
|
||||
uuidParsed, err := uuid.Parse(requestUuid)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dbUser, err := queries.GetUserByUUID(ctx, uuidParsed)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &dbUser, nil
|
||||
}
|
||||
|
||||
func userFromDbToDomain(dbUser db.User) *domain.User {
|
||||
return &domain.User{
|
||||
PhoneNumber: dbUser.PhoneNumber,
|
||||
Uuid: dbUser.Uuid.String(),
|
||||
}
|
||||
}
|
||||
|
||||
func (u userRepo) CreateUser(ctx context.Context, phoneNumber string) (*db.User, error) {
|
||||
queries := db.New(u.db)
|
||||
user, err := queries.CreateUser(ctx, phoneNumber)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (u userRepo) GetUserByPhoneNumber(ctx context.Context, phoneNumber string) (*db.User, error) {
|
||||
queries := db.New(u.db)
|
||||
dbUser, err := queries.GetByPhoneNumber(ctx, phoneNumber)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &dbUser, nil
|
||||
}
|
||||
|
||||
func NewUserRepo(db db.DBTX) domain.UserRepository {
|
||||
return &userRepo{db: db}
|
||||
}
|
||||
Reference in New Issue
Block a user