package main import "database/sql" type result struct { text string err error } // processMessage saves the request, calls Ollama, and saves the response — // all in a separate goroutine. It sends a single result on ch when done. func (c *RemoteChatApp) processMessage(db *sql.DB, message, model string, ch chan<- result) { go func() { requestID, err := saveRequest(db, message) if err != nil { ch <- result{err: err} return } response, err := c.callOllama(message, model) if err != nil { ch <- result{err: err} return } if err := saveResponse(db, requestID, response); err != nil { ch <- result{err: err} return } ch <- result{text: response} }() }