save for test after separate table users

This commit is contained in:
Pavel 2024-06-12 17:34:37 +03:00
parent 4a752c8f12
commit 3f033e3a5f
4 changed files with 43 additions and 29 deletions

2
go.mod

@ -13,7 +13,7 @@ require (
github.com/twmb/franz-go v1.16.1
go.uber.org/zap v1.27.0
google.golang.org/protobuf v1.33.0
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240608175833-b161daea2841
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240612140327-7764e7618cca
)
require (

6
go.sum

@ -134,5 +134,7 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240223054633-6cb3d5ce45b6 h1:oV+/HNX+JPoQ3/GUx08hio7d45WpY0AMGrFs7j70QlA=
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240223054633-6cb3d5ce45b6/go.mod h1:lTmpjry+8evVkXWbEC+WMOELcFkRD1lFMc7J09mOndM=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240608175833-b161daea2841 h1:3T79OtrS85P8FnCnL/upxhugNL89TOXyw3kOcnXjMFw=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240608175833-b161daea2841/go.mod h1:n66zm88Dh12+idyfqh0vU5nd9BZYxM6Pv0XYnmy0398=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240612135015-429052cf2e7d h1:M5Uzn8cUtz3ZX+4C2+XdVW49n3cDsrO/SlYy/LePQ38=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240612135015-429052cf2e7d/go.mod h1:n66zm88Dh12+idyfqh0vU5nd9BZYxM6Pv0XYnmy0398=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240612140327-7764e7618cca h1:nEZNHR0VjV6WyEhVY8nlu2JtWRw2NdLZpAivivS3mbg=
penahub.gitlab.yandexcloud.net/backend/quiz/common.git v0.0.0-20240612140327-7764e7618cca/go.mod h1:n66zm88Dh12+idyfqh0vU5nd9BZYxM6Pv0XYnmy0398=

@ -42,7 +42,7 @@ func (s *Service) SoftDeleteAccount(ctx context.Context, accountID string) error
return nil
}
func (s *Service) GetCurrentAccount(ctx context.Context, accountID string) (*model.User, error) {
func (s *Service) GetCurrentAccount(ctx context.Context, accountID string) (*model.AmoAccount, error) {
user, err := s.repository.AmoRepo.GetCurrentAccount(ctx, accountID)
if err != nil {
if err == sql.ErrNoRows {

@ -104,7 +104,6 @@ func (m *Methods) CheckUsers(ctx context.Context, allTokens []model.Token) error
listUser[token.AccountID] = append(listUser[token.AccountID], userData.Embedded.Users...)
}
var usersForUpdateAndCreate []model.User
for accountID, users := range listUser {
mainAccount, err := m.repo.AmoRepo.GetCurrentAccount(ctx, accountID)
if err != nil {
@ -112,30 +111,49 @@ func (m *Methods) CheckUsers(ctx context.Context, allTokens []model.Token) error
return err
}
currentUserUsers, err := m.repo.AmoRepo.GetUserUsersByID(ctx, mainAccount.Amouserid)
currentUserUsers, err := m.repo.AmoRepo.GetUserUsersByID(ctx, mainAccount.AmoID)
if err != nil {
m.logger.Error("error getting user users by amo user id", zap.Error(err))
return err
}
for _, user := range users {
usersForUpdateAndCreate = append(usersForUpdateAndCreate, model.User{
AmoID: user.ID,
Name: user.FullName,
Group: int32(user.Rights.GroupID),
Role: int32(user.Rights.RoleID),
Email: user.Email,
Amouserid: mainAccount.Amouserid,
})
found := false
for _, currentUser := range currentUserUsers {
found = true
if user.ID == currentUser.AmoUserID {
err := m.repo.AmoRepo.UpdateAmoAccountUser(ctx, model.AmoAccountUser{
AmoID: currentUser.AmoID,
AmoUserID: currentUser.AmoUserID,
Name: user.Name,
Email: user.Email,
Role: int32(user.Rights.RoleID),
Group: int32(user.Rights.GroupID),
})
if err != nil {
m.logger.Error("failed update user amo account in db", zap.Error(err))
return err
}
}
}
if !found {
err := m.repo.AmoRepo.AddAmoAccountUser(ctx, model.AmoAccountUser{
AmoID: mainAccount.AmoID,
AmoUserID: user.ID,
Name: user.Name,
Email: user.Email,
Role: int32(user.Rights.RoleID),
Group: int32(user.Rights.GroupID),
})
if err != nil {
m.logger.Error("failed insert user amo account in db", zap.Error(err))
return err
}
}
}
var deletedUserIDs []int64
for _, currentUserUser := range currentUserUsers {
// todo костыль нужно главный аккаунт выносить в отдельную таблицу - например companyAmo
if currentUserUser.AmoID == mainAccount.AmoID {
continue
}
found := false
for _, user := range users {
if currentUserUser.AmoID == user.ID {
@ -158,12 +176,6 @@ func (m *Methods) CheckUsers(ctx context.Context, allTokens []model.Token) error
}
}
err := m.repo.AmoRepo.CheckAndUpdateUsers(ctx, usersForUpdateAndCreate)
if err != nil {
m.logger.Error("error update users list data in db", zap.Error(err))
return err
}
return nil
}
@ -517,16 +529,16 @@ func (m *Methods) CreateUserFromWebHook(ctx context.Context, msg models.KafkaMes
return nil, err
}
toCreate := model.User{
toCreate := model.AmoAccount{
AccountID: msg.AccountID,
AmoID: userInfo.ID,
Name: userInfo.Name,
Subdomain: msg.RefererURL,
AmoID: userInfo.ID,
Amouserid: userInfo.ID,
Country: userInfo.Country,
DriveURL: userInfo.DriveUrl,
}
err = m.repo.AmoRepo.CreateAccount(ctx, msg.AccountID, toCreate)
err = m.repo.AmoRepo.CreateAccount(ctx, toCreate)
if err != nil {
m.logger.Error("error create account in db in CreateUserFromWebHook", zap.Error(err))
return nil, err