package picture import ( "strings" "time" "git.umbach.dev/app-idea/rest-api/modules/config" "git.umbach.dev/app-idea/rest-api/modules/database" "git.umbach.dev/app-idea/rest-api/modules/rabbitmq" "git.umbach.dev/app-idea/rest-api/modules/structs" "git.umbach.dev/app-idea/rest-api/modules/utils" "git.umbach.dev/app-idea/rest-api/routers/api/v1/user" "github.com/gofiber/fiber/v2" "github.com/google/uuid" log "github.com/sirupsen/logrus" ) func Save(c *fiber.Ctx) error { log.Infoln("header", string(c.Request().Header.ContentType())) log.Infoln("formValue", c.FormValue("image")) file, err := c.FormFile("image") if err != nil { log.Infoln("err1", err) return c.SendStatus(fiber.StatusInternalServerError) } bytes, err := utils.FormFileToBytes(file) if err != nil { log.Info("formFileToBytes", err) return c.SendStatus(fiber.StatusInternalServerError) } log.Info("b", len(bytes)) user, err := user.GetUserBySessionId(c.Cookies(config.Cfg.Settings.Cookies.SessionId)) if err != nil { log.Infoln("err004", err) return c.SendStatus(fiber.StatusInternalServerError) } log.Infoln("userId", user.Id) filename := strings.Replace(file.Filename, "-", "", -1) rabbitmq.PublishPicture(structs.RabbitmqPictureMessage{Picture: bytes, UserId: user.Id, Filename: filename}) db := database.DB res := db.Create(&structs.Picture{UserId: user.Id, PictureId: strings.Replace(uuid.New().String(), "-", "", -1), Url: filename, CreatedAt: time.Now()}) if res.Error != nil { log.Warnln("Failed to insert user to db:", res.Error) return c.SendStatus(fiber.StatusInternalServerError) } return c.SendStatus(fiber.StatusOK) }