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
import (
"evening_detective_server/internal/repos"
"evening_detective_server/internal/services/users_service"
proto "evening_detective_server/proto"
"google.golang.org/protobuf/types/known/timestamppb"
@@ -10,7 +10,7 @@ import (
// mapUser преобразует пользователя в proto-структуру. Возвращает nil для
// обезличенного автора (аккаунт удалён, контент сохранён) — клиент отображает
// такого автора как «Автор удалён».
func mapUser(o *repos.User) *proto.User {
func mapUser(o *users_service.User) *proto.User {
if o == nil {
return nil
}
+2 -2
View File
@@ -4,7 +4,7 @@ import (
"testing"
"time"
"evening_detective_server/internal/repos"
"evening_detective_server/internal/services/users_service"
)
func TestMapUser(t *testing.T) {
@@ -15,7 +15,7 @@ func TestMapUser(t *testing.T) {
})
t.Run("обычный пользователь маппится полностью", func(t *testing.T) {
u := &repos.User{
u := &users_service.User{
ID: 42,
Username: "detective",
Email: "d@example.com",
@@ -2,7 +2,7 @@ package scenarios_service
import (
"evening_detective_server/internal/modules/storytelling"
"evening_detective_server/internal/repos"
"evening_detective_server/internal/services/users_service"
"time"
)
@@ -12,7 +12,7 @@ type Scenario struct {
Description *string
Image *string
Story *storytelling.Story
Author *repos.User
Author *users_service.User
Status string
UpdatedAt time.Time
CreatedAt time.Time
@@ -7,6 +7,7 @@ import (
"evening_detective_server/internal/modules/file_storage"
"evening_detective_server/internal/modules/storytelling"
"evening_detective_server/internal/repos"
"evening_detective_server/internal/services/users_service"
)
func mapScenariosLight(
@@ -48,7 +49,7 @@ func MapScenarioLight(
Description: o.Description,
Image: mapImage(o.Image, domain),
Story: nil,
Author: o.Author,
Author: mapAuthor(o.Author),
Status: o.Status,
UpdatedAt: o.UpdatedAt,
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(
o *repos.Scenario,
domain string,
+4 -4
View File
@@ -326,23 +326,23 @@ func (s *UsersService) Refresh(
func (s *UsersService) GetUsers(
ctx context.Context,
) ([]*repos.User, error) {
) ([]*User, error) {
users, err := s.usersRepo.GetUsers(ctx)
if err != nil {
return nil, err
}
return users, nil
return mapUsers(users), nil
}
func (s *UsersService) GetUserByID(
ctx context.Context,
userID int,
) (*repos.User, error) {
) (*User, error) {
user, err := s.usersRepo.GetUserByID(ctx, userID)
if err != nil {
return nil, err
}
return user, nil
return mapUser(user), nil
}
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
}