[MM-56904] Reduce the number of api requests made to fetch user information for GMs on page load (#27149)

* use new endpoint to fetch group members
Этот коммит содержится в:
Ben Cooke
2024-07-25 15:57:23 -04:00
коммит произвёл GitHub
родитель d89ffe269f
Коммит b244bb621d
25 изменённых файлов: 516 добавлений и 76 удалений

Просмотреть файл

@@ -315,3 +315,54 @@ func (s SqlPreferenceStore) CleanupFlagsBatch(limit int64) (int64, error) {
return rowsAffected, nil
}
// Delete preference for limit_visible_dms_gms where their value is greater than "40" or less than "1"
func (s SqlPreferenceStore) DeleteInvalidVisibleDmsGms() (int64, error) {
var queryString string
var args []interface{}
var err error
// We need to pad the value field with zeros when doing comparison's because the value is stored as a string.
// Having them the same length allows Postgres/MySQL to compare them correctly.
whereClause := sq.And{
sq.Eq{"Category": model.PreferenceCategorySidebarSettings},
sq.Eq{"Name": model.PreferenceLimitVisibleDmsGms},
sq.Or{
sq.Gt{"SUBSTRING(CONCAT('000000000000000', Value), LENGTH(Value) + 1, 15)": "000000000000040"},
sq.Lt{"SUBSTRING(CONCAT('000000000000000', Value), LENGTH(Value) + 1, 15)": "000000000000001"},
},
}
if s.DriverName() == "postgres" {
subQuery := s.getQueryBuilder().
Select("UserId, Category, Name").
From("Preferences").
Where(whereClause).
Limit(100)
queryString, args, err = s.getQueryBuilder().
Delete("Preferences").
Where(sq.Expr("(userid, category, name) IN (?)", subQuery)).
ToSql()
if err != nil {
return int64(0), errors.Wrap(err, "could not build sql query to delete preference")
}
} else {
queryString, args, err = s.getQueryBuilder().
Delete("Preferences").
Where(whereClause).
Limit(100).
ToSql()
if err != nil {
return int64(0), errors.Wrap(err, "could not build sql query to delete preference")
}
}
result, err := s.GetMasterX().Exec(queryString, args...)
if err != nil {
return 0, errors.Wrap(err, "failed to delete Preference")
}
rowsAffected, err := result.RowsAffected()
if err != nil {
return 0, errors.Wrap(err, "unable to get rows affected")
}
return rowsAffected, nil
}

Просмотреть файл

@@ -15,7 +15,7 @@ import (
)
func TestPreferenceStore(t *testing.T) {
StoreTest(t, storetest.TestPreferenceStore)
StoreTestWithSqlStore(t, storetest.TestPreferenceStore)
}
func TestDeleteUnusedFeatures(t *testing.T) {