update amo repo users check method

This commit is contained in:
Pavel 2024-05-03 18:11:57 +03:00
parent fe2fac1eac
commit e610703cbf

@ -6,7 +6,6 @@ import (
"encoding/json"
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal/sqlcgen"
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
"strings"
"time"
)
@ -136,32 +135,41 @@ func (r *AmoRepository) CheckMainUser(ctx context.Context, user model.User) erro
return nil
}
func (r *AmoRepository) CheckAndUpdateUsers(ctx context.Context, user model.User) error {
err := r.queries.CheckUsers(ctx, sqlcgen.CheckUsersParams{
Amoid: user.AmoID,
Name: user.Name,
Email: user.Email,
Role: user.Role,
Group: user.Group,
Amouserid: user.Amouserid,
})
func (r *AmoRepository) CheckAndUpdateUsers(ctx context.Context, users []model.User) error {
dollar1, err := json.Marshal(users)
if err != nil {
return err
}
rows, err := r.queries.CheckUsers(ctx, dollar1)
if err != nil {
return err
}
// чекаем на конфликт
if err != nil && strings.Contains(err.Error(), "duplicate key value violates unique constraint") {
err = r.queries.UpdateUsers(ctx, sqlcgen.UpdateUsersParams{
Amoid: user.AmoID,
Name: user.Name,
Email: user.Email,
Role: user.Role,
Group: user.Group,
Amouserid: user.Amouserid,
})
if rows != nil {
var toUpdate []model.User
for _, row := range rows {
to := model.User{
AmoID: row.Amoid,
Name: row.Name,
Group: row.Group,
Role: row.Role,
Email: row.Email,
Amouserid: row.Amouserid,
}
toUpdate = append(toUpdate, to)
}
dollar1, err := json.Marshal(toUpdate)
if err != nil {
return err
}
err = r.queries.UpdateUsers(ctx, dollar1)
if err != nil {
return err
}
return nil
}
return err
return nil
}
func (r *AmoRepository) GetTokenByID(ctx context.Context, accountID string) (*model.Token, error) {