Refactor blob cache code into separate module
[trackgit.git] / dbcache.py
blob0012d4c8ba9fcc72c250c8a3c5ab981a07944f3f
1 class Cache(object):
3 def __init__(self, cls, attr, session):
4 self.cls = cls
5 self.attr = attr
6 self._cache = {}
7 self.session = session
9 def __getitem__(self, key):
10 try:
11 return self._cache[key]
12 except KeyError:
13 pass
14 v = session.query(self.cls).filter(self.attr==key).first()
15 if not v:
16 raise KeyError
17 self._cache[key] = v
18 return v
20 def get(self, key):
21 try:
22 v = self[key]
23 except KeyError:
24 v = cls(key)
25 self._cache[key] = v
26 session.add(v)
27 return v