changeset 1665:36f77a46f291 beta

Added cache options to some db getters
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 11 Nov 2011 18:45:48 +0200
parents 65386911df2a
children a404060706c0
files rhodecode/model/db.py
diffstat 1 files changed, 16 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/model/db.py	Fri Nov 11 18:16:14 2011 +0200
+++ b/rhodecode/model/db.py	Fri Nov 11 18:45:48 2011 +0200
@@ -305,15 +305,25 @@
             return self.__class__.__name__
 
     @classmethod
-    def get_by_username(cls, username, case_insensitive=False):
+    def get_by_username(cls, username, case_insensitive=False, cache=False):
         if case_insensitive:
-            return Session.query(cls).filter(cls.username.ilike(username)).scalar()
+            q = cls.query().filter(cls.username.ilike(username))
         else:
-            return Session.query(cls).filter(cls.username == username).scalar()
+            q = cls.query().filter(cls.username == username)
+
+        if cache:
+            q = q.options(FromCache("sql_cache_short",
+                                    "get_user_%s" % username))
+        return q.scalar()
 
     @classmethod
-    def get_by_api_key(cls, api_key):
-        return cls.query().filter(cls.api_key == api_key).one()
+    def get_by_api_key(cls, api_key, cache=False):
+        q = cls.query().filter(cls.api_key == api_key)
+
+        if cache:
+            q = q.options(FromCache("sql_cache_short",
+                                    "get_api_key_%s" % api_key))
+        q.one()
 
     def update_lastlogin(self):
         """Update user lastlogin"""
@@ -1083,6 +1093,7 @@
         Session.add(inv_obj)
         Session.commit()
 
+
 class DbMigrateVersion(Base, BaseModel):
     __tablename__ = 'db_migrate_version'
     __table_args__ = {'extend_existing':True}