feat: +register
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
// "github.com/jackc/pgx/v5"
|
||||
"github.com/jackc/pgx/v5/pgconn"
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
)
|
||||
|
||||
type Repo struct {
|
||||
pool *pgxpool.Pool
|
||||
}
|
||||
|
||||
func NewRepo(pool *pgxpool.Pool) Repo {
|
||||
return Repo {
|
||||
pool: pool,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *Repo) Exec(ctx context.Context, query string, args ...any) (pgconn.CommandTag, error) {
|
||||
conn, err := r.pool.Acquire(context.Background())
|
||||
if err != nil {
|
||||
return pgconn.CommandTag{}, err
|
||||
}
|
||||
|
||||
return conn.Exec(ctx, query, args...)
|
||||
}
|
||||
|
||||
func (r *Repo) CreateUser(ctx context.Context, email, hash string) error {
|
||||
_, err := r.Exec(
|
||||
ctx,
|
||||
"INSERT INTO users(email, password_hash) VALUES ($1, $2)",
|
||||
email, hash,
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
var pgErr *pgconn.PgError
|
||||
if errors.As(err, &pgErr) {
|
||||
return ErrDuplicateKey
|
||||
}
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user