- 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)
- }
|