func CreateAbility(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application/json; charset=utf-8")

	var newAbility models.NewAbility

	body, err := ioutil.ReadAll(io.LimitReader(r.Body, 1048676))

	if err != nil {
		panic(err)
	}

	if err := r.Body.Close(); err != nil {
		panic(err)
	}

	if err := json.Unmarshal(body, &newAbility); err != nil {
		message := models.APIMessage{"Input format invalid"}
		json.NewEncoder(w).Encode(message)
	} else {
		var ability models.Ability
		ability.Name = newAbility.Name

		database.DB.Create(&ability)

		if database.DB.NewRecord(ability) {
			message := models.APIMessage{"Error creating ability"}

			json.NewEncoder(w).Encode(message)
		} else {
			json.NewEncoder(w).Encode(ability)
		}
	}
}
func UpdateAbility(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application/json; charset=utf-8")

	urlParams := mux.Vars(r)
	strID := urlParams["id"]
	ability := models.Ability{}
	var newAbility models.NewAbility

	id, err := strconv.Atoi(strID)
	if err != nil {
		// handle error
		message := models.APIMessage{"Id format invalid"}
		json.NewEncoder(w).Encode(message)
	} else {

		database.DB.First(&ability, id)

		if ability.ID == 0 {
			message := models.APIMessage{"Ability not found"}
			json.NewEncoder(w).Encode(message)
		} else {

			body, err := ioutil.ReadAll(io.LimitReader(r.Body, 1048676))

			if err != nil {
				panic(err)
			}

			if err := r.Body.Close(); err != nil {
				panic(err)
			}

			if err := json.Unmarshal(body, &newAbility); err != nil {
				message := models.APIMessage{"Input format invalid"}
				json.NewEncoder(w).Encode(message)
			} else {
				ability.Name = newAbility.Name

				database.DB.Save(&ability)

				json.NewEncoder(w).Encode(ability)
			}
		}
	}
}