package controllers import ( "database/sql" "errors" "git.gnous.eu/Rick/calendrier/models" "git.gnous.eu/Rick/calendrier/services" "github.com/gofiber/fiber/v2" ) // @Summary Retourne tous les calendriers // @Tag calendar // @Param name query string false "Nom du calendrier" // @Produce json // @Success 200 {array} models.Calendar // @Failure 401 "Token mal formaté" // @Failure 500 "Erreur dans la base de données" // @Router /calendars [get] func GetCalendars(c *fiber.Ctx) error { name := c.Query("name") res, err := services.GetAllCalendar(name) if err != nil { return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"err": err.Error()}) } else { return c.Status(fiber.StatusOK).JSON(res) } } // @Summary Retourne les informations sur un calendrier // @Tag calendar // @Produce json // @Success 200 {array} models.Calendar // @Failure 401 "Token mal formaté" // @Failure 404 "Calendrier introuvable" // @Failure 500 "Erreur dans la base de données" // @Router /calendar/{id} [get] func GetCalendar(c *fiber.Ctx) error { id, err := c.ParamsInt("id") if err == nil { tmp, err := services.GetCalendarById(id) if errors.Is(err, sql.ErrNoRows) { return c.SendStatus(fiber.StatusNotFound) } else if err != nil { return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{"err": err.Error()}) } else { return c.Status(fiber.StatusOK).JSON(tmp) } } return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"err": err.Error()}) } // @Summary Retourne tous les évènements d'un calendrier // @Tag calendar // @Param name query string false "Nom de l'évènement" // @Produce json // @Success 200 {array} models.Event // @Failure 400 "Date mal formatée ou incohérente" // @Failure 401 "Token mal formaté" // @Failure 404 "Calendrier introuvable" // @Failure 500 "Erreur dans la base de données" // @Router /calendar/{id}/events [get] func GetCalendarEvents(c *fiber.Ctx) error { return nil } // @Summary Créer un calendrier // @Tag calendar // @Success 200 // @Failure 401 "Token mal formaté" // @Failure 500 "Erreur dans la base de données" // @Router /calendar/ [post] func PostCalendar(c *fiber.Ctx) error { tmp := new(models.Calendar) err := c.BodyParser(tmp) name := GetName(c) if err != nil { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"err": err.Error()}) } err = services.CreateCalendar(tmp, name) if err != nil { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"err": err.Error()}) } else { return c.SendStatus(fiber.StatusOK) } } // @Summary Modifie un calendrier // @Tag calendar // @Success 200 // @Failure 401 "Token mal formaté" // @Failure 404 "Calendrier introuvable" // @Failure 500 "Erreur dans la base de données" // @Router /calendar/{id} [patch] func PatchCalendar(c *fiber.Ctx) error { return nil } // @Summary Supprime un calendrier // @Tag calendar // @Success 200 // @Failure 401 "Token mal formaté" // @Failure 404 "Calendrier introuvable" // @Failure 500 "Erreur dans la base de données" // @Router /calendar/{id} [delete] func DeleteCalendar(c *fiber.Ctx) error { return nil } // @Summary Ajoute un évènements à un calendrier // @Tag calendar // @Success 200 // @Failure 401 "Token mal formaté" // @Failure 404 "Calendrier ou évènement introuvable" // @Failure 500 "Erreur dans la base de données" // @Router /calendar/{id}/event/{id} [post] func PostCalendarEvent(c *fiber.Ctx) error { return nil } // @Summary Partage un calendrier // @Tag calendar // @Success 200 // @Failure 401 "Token mal formaté" // @Failure 404 "Calendrier ou introuvable" // @Failure 500 "Erreur dans la base de données" // @Router /calendar/{id}/share [post] func PostCalendarShare(c *fiber.Ctx) error { return nil } // @Summary Supprime un partage de calendrier // @Tag calendar // @Success 200 // @Failure 401 "Token mal formaté" // @Failure 404 "Calendrier ou lien introuvable" // @Failure 500 "Erreur dans la base de données" // @Router /calendar/{id}/share/{id} [delete] func DeleteCalendarShare(c *fiber.Ctx) error { return nil } // @Summary Ajoute un utilisateur dans un calendrier // @Tag calendar // @Success 200 // @Failure 401 "Token mal formaté" // @Failure 404 "Calendrier ou utilisateur introuvable" // @Failure 500 "Erreur dans la base de données" // @Router /calendar/{id}/user/{id} [post] func PostCalendarUser(c *fiber.Ctx) error { return nil } // @Summary Supprime un utilisateur dans un calendrier // @Tag calendar // @Success 200 // @Failure 401 "Token mal formaté" // @Failure 404 "Calendrier ou utilisateur introuvable" // @Failure 500 "Erreur dans la base de données" // @Router /calendar/{id}/user/{id} [delete] func DeleteCalendarUser(c *fiber.Ctx) error { return nil } // @Summary Change la visibilité d'un calendrier // @Tag calendar // @Success 200 // @Accept json // @Param is_public body bool true "La visiblité à mettre" // @Failure 401 "Token mal formaté" // @Failure 404 "Calendrier introuvable" // @Failure 500 "Erreur dans la base de données" // @Router /calendar/{id}/visibility [put] /* func PutVisibilityCalendar(c *fiber.Ctx) error { return nil } */