AddMessage @Title AddMessage @Tag Message API @Description add message @Param body body object.Message true "The details of the message" @Success 200 {object} object.Chat The Response object @router /add-message [post]
()
| 300 | // @Success 200 {object} object.Chat The Response object |
| 301 | // @router /add-message [post] |
| 302 | func (c *ApiController) AddMessage() { |
| 303 | var message object.Message |
| 304 | err := json.Unmarshal(c.Ctx.Input.RequestBody, &message) |
| 305 | if err != nil { |
| 306 | c.ResponseError(err.Error()) |
| 307 | return |
| 308 | } |
| 309 | |
| 310 | id := util.GetIdFromOwnerAndName(message.Owner, message.Name) |
| 311 | originMessage, err := object.GetMessage(id) |
| 312 | if err != nil { |
| 313 | c.ResponseError(err.Error()) |
| 314 | return |
| 315 | } |
| 316 | |
| 317 | var chat *object.Chat |
| 318 | if originMessage != nil { |
| 319 | if !c.IsCurrentUser(originMessage.User) { |
| 320 | return |
| 321 | } |
| 322 | var mutable bool |
| 323 | chat, mutable = c.ensureMessageMutable(originMessage) |
| 324 | if !mutable { |
| 325 | return |
| 326 | } |
| 327 | preserveMessageOwnership(&message, originMessage) |
| 328 | } else { |
| 329 | if !c.IsCurrentUser(message.User) { |
| 330 | return |
| 331 | } |
| 332 | if message.Chat != "" { |
| 333 | var mutable bool |
| 334 | chat, mutable = c.ensureMessageMutable(&message) |
| 335 | if !mutable { |
| 336 | return |
| 337 | } |
| 338 | } |
| 339 | } |
| 340 | |
| 341 | // if originMessage not nil, means edit message, delete all later messages |
| 342 | if originMessage != nil { |
| 343 | err = object.DeleteAllLaterMessages(id) |
| 344 | if err != nil { |
| 345 | c.ResponseError(err.Error()) |
| 346 | return |
| 347 | } |
| 348 | } |
| 349 | |
| 350 | addMessageAfterSuccess := true |
| 351 | if message.IsRegenerated { |
| 352 | messages, err := object.GetChatMessages(message.Chat) |
| 353 | if err != nil { |
| 354 | c.ResponseError(err.Error()) |
| 355 | return |
| 356 | } |
| 357 | var lastAIMessage *object.Message |
| 358 | var lastUserMessage *object.Message |
| 359 | for i := len(messages) - 1; i >= 0; i-- { |
nothing calls this directly
no test coverage detected