fix: исправлена регистрация - добавлена поддержка JSON полей

- Исправлена конвертация models.JSON в PostgreSQL
- Добавлено детальное логирование в AuthService
- Обновлены структуры LoginResponse с UserResponse и OrganizationResponse
- Исправлены методы Create/GetByID/Update в OrganizationRepository
- Протестирована полная регистрация и аутентификация

Регистрация и login работают корректно
This commit is contained in:
2025-08-27 15:03:10 +04:00
parent ae84ce74a7
commit cce7622ae1
3 changed files with 92 additions and 15 deletions

View File

@@ -3,6 +3,7 @@ package repository
import (
"context"
"database/sql"
"encoding/json"
"fmt"
"erp-mvp/core-service/internal/models"
@@ -29,7 +30,13 @@ func (r *organizationRepository) Create(ctx context.Context, org *models.Organiz
VALUES ($1, $2, $3, $4, $5)
`
_, err := r.db.ExecContext(ctx, query, org.ID, org.Name, org.Type, org.Settings, org.CreatedAt)
// Конвертируем JSON в строку
settingsJSON, err := json.Marshal(org.Settings)
if err != nil {
return fmt.Errorf("failed to marshal settings: %w", err)
}
_, err = r.db.ExecContext(ctx, query, org.ID, org.Name, org.Type, string(settingsJSON), org.CreatedAt)
if err != nil {
return fmt.Errorf("failed to create organization: %w", err)
}
@@ -44,12 +51,13 @@ func (r *organizationRepository) GetByID(ctx context.Context, id uuid.UUID) (*mo
WHERE id = $1
`
var settingsJSON []byte
org := &models.Organization{}
err := r.db.QueryRowContext(ctx, query, id).Scan(
&org.ID,
&org.Name,
&org.Type,
&org.Settings,
&settingsJSON,
&org.CreatedAt,
)
@@ -60,6 +68,16 @@ func (r *organizationRepository) GetByID(ctx context.Context, id uuid.UUID) (*mo
return nil, fmt.Errorf("failed to get organization: %w", err)
}
// Конвертируем JSON строку в map
if len(settingsJSON) > 0 {
err = json.Unmarshal(settingsJSON, &org.Settings)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal settings: %w", err)
}
} else {
org.Settings = make(models.JSON)
}
return org, nil
}
@@ -70,7 +88,13 @@ func (r *organizationRepository) Update(ctx context.Context, org *models.Organiz
WHERE id = $1
`
result, err := r.db.ExecContext(ctx, query, org.ID, org.Name, org.Type, org.Settings)
// Конвертируем JSON в строку
settingsJSON, err := json.Marshal(org.Settings)
if err != nil {
return fmt.Errorf("failed to marshal settings: %w", err)
}
result, err := r.db.ExecContext(ctx, query, org.ID, org.Name, org.Type, string(settingsJSON))
if err != nil {
return fmt.Errorf("failed to update organization: %w", err)
}