internal/database/ops_user.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package database import ( "fmt" "time" "github.com/gocql/gocql" ) func (s *service) CreateUser(email, passwordHash string) (*User, error) { user := &User{ ID: gocql.TimeUUID(), Email: email, PasswordHash: passwordHash, CreatedAt: time.Now(), UpdatedAt: time.Now(), } if err := s.session.Query(` INSERT INTO users (id, email, password_hash, created_at, updated_at) VALUES (?, ?, ?, ?, ?)`, user.ID, user.Email, user.PasswordHash, user.CreatedAt, user.UpdatedAt, ).Exec(); err != nil { return nil, fmt.Errorf("error creating user: %w", err) } return user, nil } func (s *service) GetUserByEmail(email string) (*User, error) { var user User if err := s.session.Query(` SELECT id, email, password_hash, created_at, updated_at FROM users WHERE email = ? ALLOW FILTERING`, email, ).Scan(&user.ID, &user.Email, &user.PasswordHash, &user.CreatedAt, &user.UpdatedAt); err != nil { return nil, fmt.Errorf("user not found: %w", err) } return &user, nil } func (s *service) GetUserByID(id gocql.UUID) (*User, error) { var user User if err := s.session.Query(` SELECT id, email, password_hash, created_at, updated_at FROM users WHERE id = ?`, id, ).Scan(&user.ID, &user.Email, &user.PasswordHash, &user.CreatedAt, &user.UpdatedAt); err != nil { return nil, fmt.Errorf("user not found: %w", err) } return &user, nil } |