diff --git a/docker-compose.yml b/docker-compose.yml index be7cb69..fc7f569 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,11 +18,13 @@ services: context: ./machines dockerfile: Dockerfile environment: + - APPPORT=3000 - DBHOST=db - DBPORT=5432 - DBNAME=komponiranje - DBUSER=pero - DBPASSWORD=pero.000 + - PRODUCTSAPPURL=http://products-service:3000 # ports: # - 3000:3000 depends_on: @@ -33,6 +35,7 @@ services: context: ./products dockerfile: Dockerfile environment: + - APPPORT=3000 - DBHOST=db - DBPORT=5432 - DBNAME=komponiranje diff --git a/machines/app/api/router.go b/machines/app/api/router.go index b903684..cf39e52 100644 --- a/machines/app/api/router.go +++ b/machines/app/api/router.go @@ -2,6 +2,7 @@ package api import ( "fmt" + "io" "machines/app/cfg" "machines/app/db" "net/http" @@ -56,6 +57,39 @@ func handleGetMachine(dbConn *gorm.DB) gin.HandlerFunc { func handleGetMachineProducts(dbConn *gorm.DB) gin.HandlerFunc { return func(c *gin.Context) { + machineId, err := strconv.Atoi(c.Param("machineId")) + if err != nil { + raiseBadRequestError(c, "Invalid machineId parameter") + return + } + + machine, err := db.GetMachine(dbConn, machineId) + if err != nil { + raiseNotFoundError(c, "Machine not found") + return + } + + url := fmt.Sprintf("%s/products?machineId=%d", cfg.Config.ProductsAppUrl, machine.Id) + resp, err := http.Get(url) + if err != nil { + fmt.Println(err.Error()) + raiseInternalError(c, err.Error()) + return + } + + if resp.Body != nil { + defer resp.Body.Close() + } + + body, err := io.ReadAll(resp.Body) + if err != nil { + fmt.Println(err.Error()) + raiseInternalError(c, err.Error()) + return + } + + c.Header("Content-Type", "application/json; charset=utf-8") + c.Writer.WriteString(string(body)) } } diff --git a/machines/app/cfg/config.go b/machines/app/cfg/config.go index 9f9fe4d..a64c239 100644 --- a/machines/app/cfg/config.go +++ b/machines/app/cfg/config.go @@ -5,15 +5,14 @@ import ( ) type configStruct struct { - AppHost string `default:"0.0.0.0"` - AppPort int `default:"3000"` - DbHost string `default:"localhost"` - DbPort int `default:"55432"` - DbName string `default:"komponiranje"` - DbUser string `default:"pero"` - DbPassword string `default:"pero.000"` - ProductsAppHost string `default:"localhost"` - ProductsAppPort int `default:"3001"` + AppHost string `default:"0.0.0.0"` + AppPort int `default:"3000"` + DbHost string `default:"localhost"` + DbPort int `default:"55432"` + DbName string `default:"komponiranje"` + DbUser string `default:"pero"` + DbPassword string `default:"pero.000"` + ProductsAppUrl string `default:"http://localhost:3001"` } const ENV_PREFIX = ""