add user management functionality with OTP verification and consent handling, DI introduced

This commit is contained in:
2025-08-10 10:38:49 +03:00
parent 6a9061a3de
commit 5d80a68b44
30 changed files with 828 additions and 528 deletions

View 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}
}