Files
billit/internal/auth/store.go
Arkaprabha Chakraborty 28733e22d3 quite a lot of things
2025-12-06 03:05:44 +05:30

70 lines
1.6 KiB
Go

package auth
import (
"billit/internal/database"
)
// DBUserStore adapts database.Service to auth.UserStore interface
type DBUserStore struct {
db database.Service
}
// NewDBUserStore creates a new user store backed by the database
func NewDBUserStore(db database.Service) *DBUserStore {
return &DBUserStore{db: db}
}
// CreateUser creates a new user
func (s *DBUserStore) CreateUser(email, passwordHash string) (*User, error) {
dbUser, err := s.db.CreateUser(email, passwordHash)
if err != nil {
return nil, err
}
return &User{
ID: dbUser.ID,
Email: dbUser.Email,
Password: dbUser.Password,
CompanyDetails: dbUser.CompanyDetails,
BankDetails: dbUser.BankDetails,
CreatedAt: dbUser.CreatedAt,
}, nil
}
// GetUserByEmail retrieves a user by email
func (s *DBUserStore) GetUserByEmail(email string) (*User, error) {
dbUser, err := s.db.GetUserByEmail(email)
if err != nil {
return nil, err
}
if dbUser == nil {
return nil, nil
}
return &User{
ID: dbUser.ID,
Email: dbUser.Email,
Password: dbUser.Password,
CompanyDetails: dbUser.CompanyDetails,
BankDetails: dbUser.BankDetails,
CreatedAt: dbUser.CreatedAt,
}, nil
}
// GetUserByID retrieves a user by ID
func (s *DBUserStore) GetUserByID(id string) (*User, error) {
dbUser, err := s.db.GetUserByID(id)
if err != nil {
return nil, err
}
if dbUser == nil {
return nil, nil
}
return &User{
ID: dbUser.ID,
Email: dbUser.Email,
Password: dbUser.Password,
CompanyDetails: dbUser.CompanyDetails,
BankDetails: dbUser.BankDetails,
CreatedAt: dbUser.CreatedAt,
}, nil
}