|
|
- package Messages
-
- import (
- "encoding/json"
- "net/http"
-
- "github.com/gofrs/uuid"
-
- "git.tovijaeschke.xyz/tovi/Capsule/Backend/Database"
- "git.tovijaeschke.xyz/tovi/Capsule/Backend/Models"
- )
-
- type rawUpdateConversationData struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Users []Models.ConversationDetailUser `json:"users"`
- UserConversations []Models.UserConversation `json:"user_conversations"`
- }
-
- // UpdateConversation updates the conversation data, such as title, users, etc
- func UpdateConversation(w http.ResponseWriter, r *http.Request) {
- var (
- rawConversationData rawUpdateConversationData
- messageThread Models.ConversationDetail
- err error
- )
-
- err = json.NewDecoder(r.Body).Decode(&rawConversationData)
- if err != nil {
- http.Error(w, "Error", http.StatusInternalServerError)
- return
- }
-
- messageThread = Models.ConversationDetail{
- Base: Models.Base{
- ID: uuid.FromStringOrNil(rawConversationData.ID),
- },
- Name: rawConversationData.Name,
- Users: rawConversationData.Users,
- }
-
- err = Database.UpdateConversationDetail(&messageThread)
- if err != nil {
- http.Error(w, "Error", http.StatusInternalServerError)
- return
- }
-
- if len(rawConversationData.UserConversations) > 0 {
- err = Database.UpdateOrCreateUserConversations(&rawConversationData.UserConversations)
- if err != nil {
- http.Error(w, "Error", http.StatusInternalServerError)
- return
- }
- }
-
- w.WriteHeader(http.StatusNoContent)
- }
|