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