package Messages import ( "encoding/json" "net/http" "github.com/gofrs/uuid" "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database" "git.tovijaeschke.xyz/tovi/Envelope/Backend/Models" ) // RawCreateConversationData for holding POST payload type RawCreateConversationData struct { ID string `json:"id"` Name string `json:"name"` TwoUser string `json:"two_user"` AdminAddMembers string `json:"admin_add_members"` AdminEditInfo string `json:"admin_edit_info"` AdminSendMessages string `json:"admin_send_messages"` Users []Models.ConversationDetailUser `json:"users"` UserConversations []Models.UserConversation `json:"user_conversations"` } // CreateConversation creates ConversationDetail, ConversationDetailUsers and UserConversations func CreateConversation(w http.ResponseWriter, r *http.Request) { var ( rawConversationData RawCreateConversationData 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, TwoUser: rawConversationData.TwoUser, AdminAddMembers: rawConversationData.AdminAddMembers, AdminEditInfo: rawConversationData.AdminEditInfo, AdminSendMessages: rawConversationData.AdminSendMessages, Users: rawConversationData.Users, } err = Database.CreateConversationDetail(&messageThread) if err != nil { http.Error(w, "Error", http.StatusInternalServerError) return } err = Database.CreateUserConversations(&rawConversationData.UserConversations) if err != nil { http.Error(w, "Error", http.StatusInternalServerError) return } w.WriteHeader(http.StatusNoContent) }