Add a simple caching of chat history as an optimization
This commit is contained in:
parent
f85b54cfeb
commit
f20aa4478d
@ -38,6 +38,10 @@ func SaveUserMessage(event events.UserMessageEvent) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func saveEvent(id string, userId string, body string, eventType string, hidden *time.Time, timestamp time.Time) {
|
func saveEvent(id string, userId string, body string, eventType string, hidden *time.Time, timestamp time.Time) {
|
||||||
|
defer func() {
|
||||||
|
_historyCache = nil
|
||||||
|
}()
|
||||||
|
|
||||||
_datastore.DbLock.Lock()
|
_datastore.DbLock.Lock()
|
||||||
defer _datastore.DbLock.Unlock()
|
defer _datastore.DbLock.Unlock()
|
||||||
|
|
||||||
@ -148,10 +152,20 @@ func getChat(query string) []events.UserMessageEvent {
|
|||||||
return history
|
return history
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _historyCache *[]events.UserMessageEvent
|
||||||
|
|
||||||
func GetChatModerationHistory() []events.UserMessageEvent {
|
func GetChatModerationHistory() []events.UserMessageEvent {
|
||||||
|
if _historyCache != nil {
|
||||||
|
return *_historyCache
|
||||||
|
}
|
||||||
|
|
||||||
// Get all messages regardless of visibility
|
// Get all messages regardless of visibility
|
||||||
var query = "SELECT messages.id, user_id, body, eventType, hidden_at, timestamp, display_name, display_color, created_at, disabled_at, previous_names, namechanged_at FROM messages INNER JOIN users ON messages.user_id = users.id ORDER BY timestamp DESC"
|
var query = "SELECT messages.id, user_id, body, eventType, hidden_at, timestamp, display_name, display_color, created_at, disabled_at, previous_names, namechanged_at FROM messages INNER JOIN users ON messages.user_id = users.id ORDER BY timestamp DESC"
|
||||||
return getChat(query)
|
result := getChat(query)
|
||||||
|
|
||||||
|
_historyCache = &result
|
||||||
|
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetChatHistory() []events.UserMessageEvent {
|
func GetChatHistory() []events.UserMessageEvent {
|
||||||
@ -170,6 +184,10 @@ func GetChatHistory() []events.UserMessageEvent {
|
|||||||
// SetMessageVisibilityForUserId will bulk change the visibility of messages for a user
|
// SetMessageVisibilityForUserId will bulk change the visibility of messages for a user
|
||||||
// and then send out visibility changed events to chat clients.
|
// and then send out visibility changed events to chat clients.
|
||||||
func SetMessageVisibilityForUserId(userID string, visible bool) error {
|
func SetMessageVisibilityForUserId(userID string, visible bool) error {
|
||||||
|
defer func() {
|
||||||
|
_historyCache = nil
|
||||||
|
}()
|
||||||
|
|
||||||
// Get a list of IDs from this user within the 5hr window to send to the connected clients to hide
|
// Get a list of IDs from this user within the 5hr window to send to the connected clients to hide
|
||||||
ids := make([]string, 0)
|
ids := make([]string, 0)
|
||||||
query := fmt.Sprintf("SELECT messages.id, user_id, body, eventType, hidden_at, timestamp, display_name, display_color, created_at, disabled_at, previous_names, namechanged_at FROM messages INNER JOIN users ON messages.user_id = users.id WHERE user_id IS '%s'", userID)
|
query := fmt.Sprintf("SELECT messages.id, user_id, body, eventType, hidden_at, timestamp, display_name, display_color, created_at, disabled_at, previous_names, namechanged_at FROM messages INNER JOIN users ON messages.user_id = users.id WHERE user_id IS '%s'", userID)
|
||||||
@ -188,6 +206,10 @@ func SetMessageVisibilityForUserId(userID string, visible bool) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func saveMessageVisibility(messageIDs []string, visible bool) error {
|
func saveMessageVisibility(messageIDs []string, visible bool) error {
|
||||||
|
defer func() {
|
||||||
|
_historyCache = nil
|
||||||
|
}()
|
||||||
|
|
||||||
_datastore.DbLock.Lock()
|
_datastore.DbLock.Lock()
|
||||||
defer _datastore.DbLock.Unlock()
|
defer _datastore.DbLock.Unlock()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user