// GetChatModerationHistory will return all the chat messages suitable for moderation purposes.
funcGetChatModerationHistory()[]interface{}{
if_historyCache!=nil{
return*_historyCache
}
ifcachedAdminChatHistoryStatement==nil{
stmt,err:=_datastore.DB.Prepare(`SELECT messages.id, user_id, body, title, subtitle, image, link, eventType, hidden_at, timestamp, display_name, display_color, created_at, disabled_at, previous_names, namechanged_at, scopes, users.type FROM messages INNER JOIN users ON messages.user_id = users.id ORDER BY timestamp DESC`)
iferr!=nil{
log.Errorln("error preparing chat moderation history statement",err)
returnnil
}
cachedAdminChatHistoryStatement=stmt
}
// Get all messages regardless of visibility
query:="SELECT messages.id, user_id, body, title, subtitle, image, link, eventType, hidden_at, timestamp, display_name, display_color, created_at, disabled_at, previous_names, namechanged_at, authenticated_at, scopes, type FROM messages INNER JOIN users ON messages.user_id = users.id ORDER BY timestamp DESC"
result:=getChat(query)
result:=getChat(cachedAdminChatHistoryStatement)
_historyCache=&result
returnresult
}
varcachedChatHistoryStatement*sql.Stmt
// GetChatHistory will return all the chat messages suitable for returning as user-facing chat history.
funcGetChatHistory()[]interface{}{
// Get all visible messages
query:=fmt.Sprintf("SELECT messages.id,messages.user_id, messages.body, messages.title, messages.subtitle, messages.image, messages.link, messages.eventType, messages.hidden_at, messages.timestamp, users.display_name, users.display_color, users.created_at, users.disabled_at, users.previous_names, users.namechanged_at, users.authenticated_at, users.scopes, users.type FROM messages LEFT JOIN users ON messages.user_id = users.id WHERE hidden_at IS NULL AND disabled_at IS NULL ORDER BY timestamp DESC LIMIT %d",maxBacklogNumber)
m:=getChat(query)
// Invert order of messages
fori,j:=0,len(m)-1;i<j;i,j=i+1,j-1{
m[i],m[j]=m[j],m[i]
ifcachedChatHistoryStatement==nil{
stmt,err:=_datastore.DB.Prepare(fmt.Sprintf("SELECT messages.id,messages.user_id, messages.body, messages.title, messages.subtitle, messages.image, messages.link, messages.eventType, messages.hidden_at, messages.timestamp, users.display_name, users.display_color, users.created_at, users.disabled_at, users.previous_names, users.namechanged_at, users.scopes, users.type FROM users JOIN messages ON users.id = messages.user_id WHERE hidden_at IS NULL AND disabled_at IS NULL ORDER BY timestamp DESC LIMIT %d",maxBacklogNumber))
iferr!=nil{
log.Errorln("error preparing chat history statement",err)