Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var Melody *melody.Melody
- func init() {
- Melody = melody.New()
- }
- /* CreateComment: crea un comentario */
- func CreateComment(w http.ResponseWriter, r *http.Request) {
- m := models.Message{}
- comment := models.Comment{}
- user := models.User{}
- user, _ = r.Context().Value("user").(models.User)
- err := json.NewDecoder(r.Body).Decode(&comment)
- if err != nil {
- m.Code = http.StatusBadRequest
- m.Message = fmt.Sprintf("Error al leer el comentario: %s", err)
- commons.DisplayMessage(w, m)
- return
- }
- comment.UserID = user.ID
- db := configuration.GetConnection()
- defer db.Close()
- err = db.Create(&comment).Error
- if err != nil {
- m.Code = http.StatusBadRequest
- m.Message = fmt.Sprintf("Error al crear el comentario: %s", err)
- commons.DisplayMessage(w, m)
- return
- }
- db.Model(&comment).Related(&comment.User)
- comment.User[0].Password = ""
- j, err := json.Marshal(&comment)
- if err != nil {
- m.Code = http.StatusInternalServerError
- m.Message = fmt.Sprintf("no se pudo convertir a json: %s", err)
- commons.DisplayMessage(w, m)
- return
- }
- origin := fmt.Sprintf("localhost:%d/", commons.Port)
- url := fmt.Sprintf("ws://localhost:%d/ws", commons.Port)
- ws , err := websocket.Dial(url, "", origin)
- if err != nil {
- log.Fatal(err)
- }
- if _, err := ws.Write(j); err != nil {
- log.Fatal(err)
- }
- m.Code = http.StatusCreated
- m.Message = "Comentario creado con éxito"
- commons.DisplayMessage(w, m)
- return
- }
- /* CommentGetAll: Obtiene todos los comentarios creados hasta ese momento */
- func CommentGetAll(w http.ResponseWriter, r *http.Request) {
- comments := []models.Comment{}
- m := models.Message{}
- user := models.User{}
- vote := models.Vote{}
- user , _ = r.Context().Value("user").(models.User)
- /*vars_todo lo que llegue despues del ? en la api*/
- vars := r.URL.Query()
- db := configuration.GetConnection()
- defer db.Close()
- cComments := db.Where("parent_id = 0")
- if order, ok := vars["order"]; ok {
- if order[0] == "votes" {
- cComments = cComments.Order("votes desc, created_at desc")
- }
- } else {
- if idlimit, ok := vars["idlimit"]; ok {
- registerByPage := 30
- offset, err := strconv.Atoi(idlimit[0])
- if err != nil {
- log.Println("Error: ", err)
- }
- cComments = cComments.Where("id BETWEEN ? AND ?", offset-registerByPage, offset)
- }
- cComments = cComments.Order("id desc")
- }
- cComments.Find(&comments)
- for i := range comments {
- db.Model(&comments[i]).Related(&comments[i].User)
- comments[i].User[0].Password = ""
- comments[i].Children = commentGetChildren(comments[i].ID)
- /* Se busca el voto del usuario en Sesión */
- vote.CommentID = comments[i].ID
- vote.UserID = user.ID
- count := db.Where(&vote).Find(&vote).RowsAffected
- if count > 0 {
- if vote.Value {
- comments[i].HasVote = 1
- } else {
- comments[i].HasVote = -1
- }
- }
- }
- j,err := json.Marshal(comments)
- if err != nil {
- m.Code = http.StatusInternalServerError
- m.Message = "Error al convertir los mensajes en formato json"
- commons.DisplayMessage(w, m)
- return
- }
- if len(comments) > 0 {
- w.Header().Set("Content-Type", "application/json")
- w.WriteHeader(http.StatusOK)
- w.Write(j)
- } else {
- m.Code = http.StatusNoContent
- m.Message = "No hay contenido de comentarios"
- commons.DisplayMessage(w,m)
- }
- }
- func commentGetChildren(id uint) (children []models.Comment) {
- db := configuration.GetConnection()
- defer db.Close()
- db.Where("parent_id = ? ", id).Find(&children)
- for i := range children {
- db.Model(&children[i]).Related(&children[i].User)
- children[i].User[0].Password = ""
- }
- return
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement