// POST /repos/:repo_id/reviews func (r *reviews) Create(c *gin.Context) { var params createParam user := c.MustGet("user").(model.User) repo := c.MustGet("repo").(model.Repository) db := database.GetDB() if c.Bind(¶ms) == nil { review := model.Review{} if params.Smell == "" { params.Smell = smellDefault } var smell model.Smell var status model.Status review.RepositoryId = repo.ID review.CreatedById = user.ID review.Sha = params.Sha review.File = params.File review.Line = params.Line review.AssignedToId = params.AssignedToId if err := db.Where("name = ?", params.Smell).Find(&smell).Error; err != nil { c.AbortWithError(http.StatusBadRequest, errors.New("Invalid smell")) } else { review.SmellId = smell.ID review.Smell = smell } if err := db.Where("name = ?", statusDefault).Find(&status).Error; err != nil { c.AbortWithError(http.StatusBadRequest, errors.New("Invalid status")) } else { review.StatusId = status.ID review.Status = status } if c.IsAborted() { return } if err := db.Create(&review).Error; err != nil { c.AbortWithError(http.StatusInternalServerError, err) } else { c.JSON(http.StatusCreated, review) } } }