diff --git a/.env.example b/.env.example index 86ad524..ca71e1d 100644 --- a/.env.example +++ b/.env.example @@ -11,3 +11,5 @@ S3_HOST=http://0.0.0.0:9000 S3_USER=rustfs S3_PASSWORD=your_password S3_BUCKET=evening-detective + +FILE_PREFIX_DOMAIN=http://0.0.0.0:8090/api/files/ diff --git a/cmd/evening_detective_server/main.go b/cmd/evening_detective_server/main.go index 597f83c..63fa2c4 100644 --- a/cmd/evening_detective_server/main.go +++ b/cmd/evening_detective_server/main.go @@ -72,7 +72,10 @@ func main() { } fileService := file_service.NewFileService(fileStorage) scenariosRepo := scenarios_repo.NewScenariosRepo(dbpool) - scenarioService := scenarios_service.NewScenarioService(scenariosRepo) + scenarioService := scenarios_service.NewScenarioService( + scenariosRepo, + os.Getenv("FILE_PREFIX_DOMAIN"), + ) // Create a listener on TCP port lis, err := net.Listen("tcp", ":8080") diff --git a/docker-compose.yml b/docker-compose.yml index 51dcb8b..5905286 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,6 +22,7 @@ services: S3_USER: rustfs S3_PASSWORD: your_password S3_BUCKET: evening-detective + FILE_PREFIX_DOMAIN: http://0.0.0.0:8090/api/files/ depends_on: - postgres restart: unless-stopped diff --git a/internal/services/scenarios_service/scenario_mapper.go b/internal/services/scenarios_service/scenario_mapper.go index 980ee7d..4400d77 100644 --- a/internal/services/scenarios_service/scenario_mapper.go +++ b/internal/services/scenarios_service/scenario_mapper.go @@ -6,10 +6,13 @@ import ( "evening_detective_server/internal/repos" ) -func mapScenarios(o []*repos.Scenario) ([]*Scenario, error) { +func mapScenarios( + o []*repos.Scenario, + domain string, +) ([]*Scenario, error) { res := make([]*Scenario, 0, len(o)) for _, item := range o { - scenario, err := mapScenario(item) + scenario, err := mapScenario(item, domain) if err != nil { return nil, err } @@ -18,7 +21,10 @@ func mapScenarios(o []*repos.Scenario) ([]*Scenario, error) { return res, nil } -func mapScenario(o *repos.Scenario) (*Scenario, error) { +func mapScenario( + o *repos.Scenario, + domain string, +) (*Scenario, error) { story, err := mapStory(o.Scenario) if err != nil { return nil, err @@ -27,7 +33,7 @@ func mapScenario(o *repos.Scenario) (*Scenario, error) { ID: o.ID, Name: o.Name, Description: o.Description, - Image: o.Image, + Image: mapImage(o.Image, domain), Story: story, Author: o.Author, Status: o.Status, @@ -53,3 +59,12 @@ func convertStory(o *storytelling.Story) (string, error) { } return string(b), nil } + +func mapImage(image *string, domain string) *string { + if image == nil { + u := domain + "question.png" + return &u + } + u := domain + *image + return &u +} diff --git a/internal/services/scenarios_service/service.go b/internal/services/scenarios_service/service.go index cebfcb2..cc24f8f 100644 --- a/internal/services/scenarios_service/service.go +++ b/internal/services/scenarios_service/service.go @@ -9,13 +9,16 @@ import ( type ScenarioService struct { scenariosRepo *scenarios_repo.ScenariosRepo + domain string } func NewScenarioService( scenariosRepo *scenarios_repo.ScenariosRepo, + domain string, ) *ScenarioService { return &ScenarioService{ scenariosRepo: scenariosRepo, + domain: domain, } } @@ -39,7 +42,7 @@ func (s *ScenarioService) GetScenariosByAuthorID( if err != nil { return nil, err } - return mapScenarios(scenarios) + return mapScenarios(scenarios, s.domain) } func (s *ScenarioService) GetScenarioByID( @@ -50,7 +53,7 @@ func (s *ScenarioService) GetScenarioByID( if err != nil { return nil, err } - return mapScenario(scenario) + return mapScenario(scenario, s.domain) } func (s *ScenarioService) UpdateScenarioByID( diff --git a/migrations/20260712154823_create_scenarios_table.sql b/migrations/20260712154823_create_scenarios_table.sql index 9527e6f..43a6a1f 100644 --- a/migrations/20260712154823_create_scenarios_table.sql +++ b/migrations/20260712154823_create_scenarios_table.sql @@ -2,7 +2,7 @@ CREATE TABLE IF NOT EXISTS scenarios ( id SERIAL PRIMARY KEY, - name VARCHAR(255) NOT NULL UNIQUE, + name VARCHAR(255) NOT NULL, description TEXT, image TEXT, scenario JSONB NOT NULL DEFAULT '{}'::jsonb, @@ -17,4 +17,4 @@ CREATE TABLE ); -- +goose Down -DROP TABLE IF EXISTS scenarios; \ No newline at end of file +DROP TABLE IF EXISTS scenarios;