Esempio n. 1
0
// CreateEvent is responsible for reading and parsing the JSON
// string from the request body and persisting it ... somewhere.
func CreateEvent(c *gin.Context) {
	var evt model.Event

	fmt.Printf("Content-Type from request: %s\n", c.ContentType())
	err := c.Bind(&evt)
	if err == nil {
		fmt.Printf("Creating event: %v...\n", evt)

		// Store the new event in the DB
		dbConn, dbErr := db.GetDBConnection()
		if dbErr != nil {
			fmt.Printf("Found err: %s\n", dbErr.Error())
			c.JSON(http.StatusInternalServerError,
				map[string]string{"status": "Error cannot connect to DB!"})
			return
		}

		// Find the `sid` value that should be used when inserting the new event
		var outStadium model.Stadium
		dbConn.Table("stadiums").Where("name = ?", evt.Stadium.Name).First(&outStadium)

		fmt.Printf("Found sid=%d\n", outStadium.Sid)

		if outStadium.Sid == 0 {
			fmt.Println("Didn't find a stadium with that name!!")
			c.JSON(http.StatusBadRequest, map[string]string{"status": "Error no stadium with that name"})
			return
		}

		evt.Sid = outStadium.Sid
		dbConn.Create(&evt)

		c.JSON(http.StatusCreated, map[string]string{"status": "Success"})
	} else {
		errMsg := fmt.Sprintf("Error: %s", err.Error())
		fmt.Println(errMsg)
		c.JSON(http.StatusBadRequest, map[string]string{"status": errMsg})
	}
}