feat: update
This commit is contained in:
@@ -153,19 +153,20 @@ func (m *usersModel) Create(ctx context.Context, userModel *model.Users) (*model
|
||||
}
|
||||
|
||||
// Update updates an existing user
|
||||
func (m *usersModel) Update(ctx context.Context, id int64, model *model.Users) error {
|
||||
model.UpdatedAt = time.Now()
|
||||
func (m *usersModel) Update(ctx context.Context, id int64, userModel *model.Users) (*model.Users, error) {
|
||||
userModel.UpdatedAt = time.Now()
|
||||
|
||||
tbl := table.Users
|
||||
stmt := tbl.UPDATE(tbl.MutableColumns.Except(tbl.CreatedAt, tbl.DeletedAt)).MODEL(model).WHERE(tbl.ID.EQ(Int64(id)))
|
||||
stmt := tbl.UPDATE(tbl.MutableColumns.Except(tbl.CreatedAt, tbl.DeletedAt)).MODEL(userModel).WHERE(tbl.ID.EQ(Int64(id))).RETURNING(tbl.AllColumns)
|
||||
m.log.Infof("sql: %s", stmt.DebugSql())
|
||||
|
||||
_, err := stmt.ExecContext(ctx, db)
|
||||
if err != nil {
|
||||
var updatedUser model.Users
|
||||
|
||||
if err := stmt.QueryContext(ctx, db, &updatedUser); err != nil {
|
||||
m.log.Errorf("error updating user: %v", err)
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
return nil
|
||||
return &updatedUser, nil
|
||||
}
|
||||
|
||||
// DeleteByID soft deletes a user by ID
|
||||
@@ -277,8 +278,6 @@ func (m *usersModel) GetUserByOpenIDOrCreate(ctx context.Context, openID string,
|
||||
user, err := m.GetUserByOpenID(ctx, openID)
|
||||
if err != nil {
|
||||
if errors.Is(err, qrm.ErrNoRows) {
|
||||
// Create User
|
||||
|
||||
user, err = m.Create(ctx, userModel)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to create user")
|
||||
@@ -286,6 +285,12 @@ func (m *usersModel) GetUserByOpenIDOrCreate(ctx context.Context, openID string,
|
||||
} else {
|
||||
return nil, errors.Wrap(err, "failed to get user")
|
||||
}
|
||||
} else {
|
||||
userModel.OpenID = user.OpenID
|
||||
user, err = m.Update(ctx, user.ID, userModel)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to update user")
|
||||
}
|
||||
}
|
||||
return user, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user