From 6e96eb53b4bb17ddd624c2c27f84bfa73bd11a23 Mon Sep 17 00:00:00 2001 From: John Costa Date: Sun, 13 Apr 2025 22:29:25 +0100 Subject: [PATCH] feat: registering users if their email is not known --- backend/main.go | 6 ++++++ backend/models/user.go | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/backend/main.go b/backend/main.go index 863d968..9c5da31 100644 --- a/backend/main.go +++ b/backend/main.go @@ -333,6 +333,12 @@ func main() { return } + if exists := userModel.DoesUserExist(r.Context(), codeBody.Email); !exists { + userModel.Save(r.Context(), model.Users{ + Email: codeBody.Email, + }) + } + uuid, err := userModel.GetUserIdFromEmail(r.Context(), codeBody.Email) if err != nil { log.Println(err) diff --git a/backend/models/user.go b/backend/models/user.go index 5e5dd1b..afd1dc3 100644 --- a/backend/models/user.go +++ b/backend/models/user.go @@ -10,6 +10,7 @@ import ( . "screenmark/screenmark/.gen/haystack/haystack/table" . "github.com/go-jet/jet/v2/postgres" + "github.com/go-jet/jet/v2/qrm" "github.com/google/uuid" ) @@ -115,6 +116,24 @@ func (m UserModel) GetUserIdFromEmail(ctx context.Context, email string) (uuid.U return user.ID, err } +func (m UserModel) DoesUserExist(ctx context.Context, email string) bool { + getUserIdStmt := Users.SELECT(Users.ID).WHERE(Users.Email.EQ(String(email))) + + user := model.Users{} + err := getUserIdStmt.QueryContext(ctx, m.dbPool, &user) + + return err != qrm.ErrNoRows +} + +func (m UserModel) Save(ctx context.Context, user model.Users) (model.Users, error) { + insertUserStmt := Users.INSERT(Users.Email).VALUES(user.Email).RETURNING(Users.AllColumns) + + insertedUser := model.Users{} + err := insertUserStmt.QueryContext(ctx, m.dbPool, &insertedUser) + + return insertedUser, err +} + func NewUserModel(db *sql.DB) UserModel { return UserModel{dbPool: db} }