speedup: check local session for repo by repo name first

This commit is contained in:
Daniel Dourvaris 2016-06-22 12:53:43 +03:00
parent 1536e48bab
commit 450bb8142e

View file

@ -1373,7 +1373,13 @@ class Repository(Base, BaseModel):
@classmethod
def get_by_repo_name(cls, repo_name):
q = Session().query(cls).filter(cls.repo_name == repo_name)
session = Session()
for (klass, pkey), instance in session.identity_map.items():
if cls == klass:
if getattr(instance, 'repo_name') == repo_name:
return instance
q = session.query(cls).filter(cls.repo_name == repo_name)
q = q.options(joinedload(Repository.fork))\
.options(joinedload(Repository.user))\
.options(joinedload(Repository.group))