package Messages import ( "encoding/json" "net/http" "github.com/gofrs/uuid" "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database" ) // 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 []Database.ConversationDetailUser `json:"users"` UserConversations Database.UserConversationList `json:"user_conversations"` } // CreateConversation creates ConversationDetail, ConversationDetailUsers and UserConversations func CreateConversation(w http.ResponseWriter, r *http.Request) { var ( rawConversationData RawCreateConversationData messageThread Database.ConversationDetail err error ) err = json.NewDecoder(r.Body).Decode(&rawConversationData) if err != nil { http.Error(w, "Error", http.StatusInternalServerError) return } messageThread = Database.ConversationDetail{ Base: Database.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 = (&messageThread).CreateConversationDetail() if err != nil { http.Error(w, "Error", http.StatusInternalServerError) return } err = (&rawConversationData.UserConversations).CreateUserConversations() if err != nil { http.Error(w, "Error", http.StatusInternalServerError) return } w.WriteHeader(http.StatusNoContent) }