This commit is contained in:
2026-10-02 01:01:58 +07:00
parent 7052f80144
commit d85967968f
7 changed files with 60 additions and 11 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
package app package app
import ( import (
"evening_detective_server/internal/repos" "evening_detective_server/internal/services/users_service"
proto "evening_detective_server/proto" proto "evening_detective_server/proto"
"google.golang.org/protobuf/types/known/timestamppb" "google.golang.org/protobuf/types/known/timestamppb"
@@ -10,7 +10,7 @@ import (
// mapUser преобразует пользователя в proto-структуру. Возвращает nil для // mapUser преобразует пользователя в proto-структуру. Возвращает nil для
// обезличенного автора (аккаунт удалён, контент сохранён) — клиент отображает // обезличенного автора (аккаунт удалён, контент сохранён) — клиент отображает
// такого автора как «Автор удалён». // такого автора как «Автор удалён».
func mapUser(o *repos.User) *proto.User { func mapUser(o *users_service.User) *proto.User {
if o == nil { if o == nil {
return nil return nil
} }
+2 -2
View File
@@ -4,7 +4,7 @@ import (
"testing" "testing"
"time" "time"
"evening_detective_server/internal/repos" "evening_detective_server/internal/services/users_service"
) )
func TestMapUser(t *testing.T) { func TestMapUser(t *testing.T) {
@@ -15,7 +15,7 @@ func TestMapUser(t *testing.T) {
}) })
t.Run("обычный пользователь маппится полностью", func(t *testing.T) { t.Run("обычный пользователь маппится полностью", func(t *testing.T) {
u := &repos.User{ u := &users_service.User{
ID: 42, ID: 42,
Username: "detective", Username: "detective",
Email: "d@example.com", Email: "d@example.com",
@@ -2,7 +2,7 @@ package scenarios_service
import ( import (
"evening_detective_server/internal/modules/storytelling" "evening_detective_server/internal/modules/storytelling"
"evening_detective_server/internal/repos" "evening_detective_server/internal/services/users_service"
"time" "time"
) )
@@ -12,7 +12,7 @@ type Scenario struct {
Description *string Description *string
Image *string Image *string
Story *storytelling.Story Story *storytelling.Story
Author *repos.User Author *users_service.User
Status string Status string
UpdatedAt time.Time UpdatedAt time.Time
CreatedAt time.Time CreatedAt time.Time
@@ -7,6 +7,7 @@ import (
"evening_detective_server/internal/modules/file_storage" "evening_detective_server/internal/modules/file_storage"
"evening_detective_server/internal/modules/storytelling" "evening_detective_server/internal/modules/storytelling"
"evening_detective_server/internal/repos" "evening_detective_server/internal/repos"
"evening_detective_server/internal/services/users_service"
) )
func mapScenariosLight( func mapScenariosLight(
@@ -48,7 +49,7 @@ func MapScenarioLight(
Description: o.Description, Description: o.Description,
Image: mapImage(o.Image, domain), Image: mapImage(o.Image, domain),
Story: nil, Story: nil,
Author: o.Author, Author: mapAuthor(o.Author),
Status: o.Status, Status: o.Status,
UpdatedAt: o.UpdatedAt, UpdatedAt: o.UpdatedAt,
CreatedAt: o.CreatedAt, CreatedAt: o.CreatedAt,
@@ -57,6 +58,16 @@ func MapScenarioLight(
} }
} }
func mapAuthor(user *repos.User) *users_service.User {
if user == nil {
return nil
}
return &users_service.User{
ID: user.ID,
Username: user.Username,
}
}
func mapScenario( func mapScenario(
o *repos.Scenario, o *repos.Scenario,
domain string, domain string,
+4 -4
View File
@@ -326,23 +326,23 @@ func (s *UsersService) Refresh(
func (s *UsersService) GetUsers( func (s *UsersService) GetUsers(
ctx context.Context, ctx context.Context,
) ([]*repos.User, error) { ) ([]*User, error) {
users, err := s.usersRepo.GetUsers(ctx) users, err := s.usersRepo.GetUsers(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return users, nil return mapUsers(users), nil
} }
func (s *UsersService) GetUserByID( func (s *UsersService) GetUserByID(
ctx context.Context, ctx context.Context,
userID int, userID int,
) (*repos.User, error) { ) (*User, error) {
user, err := s.usersRepo.GetUserByID(ctx, userID) user, err := s.usersRepo.GetUserByID(ctx, userID)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return user, nil return mapUser(user), nil
} }
func (s *UsersService) AddUserRole( func (s *UsersService) AddUserRole(
+13
View File
@@ -0,0 +1,13 @@
package users_service
import "time"
// User — пользователь, доступный прикладным сценариям и выдаче наружу.
type User struct {
ID int
Username string
Email string
Roles []string
IsActive bool
CreatedAt time.Time
}
@@ -0,0 +1,25 @@
package users_service
import "evening_detective_server/internal/repos"
func mapUser(user *repos.User) *User {
if user == nil {
return nil
}
return &User{
ID: user.ID,
Username: user.Username,
Email: user.Email,
Roles: user.Roles,
IsActive: user.IsActive,
CreatedAt: user.CreatedAt,
}
}
func mapUsers(users []*repos.User) []*User {
result := make([]*User, 0, len(users))
for _, user := range users {
result = append(result, mapUser(user))
}
return result
}