Add an index for lookup by account to log entries

Also fixes the query to require one less join
This commit is contained in:
Joseph Schorr 2016-08-12 16:53:17 -04:00
parent d9b65b88e9
commit 0f46230493
4 changed files with 36 additions and 14 deletions

View file

@ -1,12 +1,12 @@
import json
from calendar import timegm
from peewee import JOIN_LEFT_OUTER, SQL, fn
from datetime import datetime, timedelta, date
from peewee import JOIN_LEFT_OUTER, fn
from datetime import datetime, timedelta
from cachetools import lru_cache
from data.database import LogEntry, LogEntryKind, User, RepositoryActionCount, db
from data.model import config
from data.model import config, user, DataModelException
def _logs_query(selections, start_time, end_time, performer=None, repository=None, namespace=None,
ignore=None):
@ -22,7 +22,11 @@ def _logs_query(selections, start_time, end_time, performer=None, repository=Non
joined = joined.where(LogEntry.performer == performer)
if namespace:
joined = joined.join(User, on=(User.username == namespace))
namespace_user = user.get_user_or_org(namespace)
if namespace_user is None:
raise DataModelException('Invalid namespace requested')
joined = joined.where(LogEntry.account == namespace_user.id)
if ignore:
kind_map = get_log_entry_kinds()