Add some docstrings and comments near get_cached_instance.
This commit is contained in:
parent
18c2f0dc78
commit
545ea62818
1 changed files with 25 additions and 0 deletions
|
@ -1485,6 +1485,15 @@ class PhotoDB(
|
|||
return self._cached_frozen_children
|
||||
|
||||
def get_cached_instance(self, thing_type, db_row):
|
||||
'''
|
||||
Check if there is already an instance in the cache and return that.
|
||||
Otherwise, a new instance is created, cached, and returned.
|
||||
|
||||
Note that in order to call this method you have to already have a
|
||||
db_row which means performing some select. If you only have the ID,
|
||||
use get_thing_by_id, as there may already be a cached instance to save
|
||||
you the select.
|
||||
'''
|
||||
thing_map = _THING_CLASSES[thing_type]
|
||||
|
||||
thing_table = thing_map['table']
|
||||
|
@ -1528,10 +1537,20 @@ class PhotoDB(
|
|||
yield thing
|
||||
|
||||
def get_thing_by_id(self, thing_type, thing_id):
|
||||
'''
|
||||
This method will first check the cache to see if there is already an
|
||||
instance with that ID, in which case we don't need to perform any SQL
|
||||
select. If it is not in the cache, then a new instance is created,
|
||||
cached, and returned.
|
||||
'''
|
||||
thing_map = _THING_CLASSES[thing_type]
|
||||
|
||||
thing_class = thing_map['class']
|
||||
if isinstance(thing_id, thing_class):
|
||||
# This could be used to check if your old reference to an object is
|
||||
# still in the cache, or re-select it from the db to make sure it
|
||||
# still exists and re-cache.
|
||||
# Probably an uncommon need but... no harm I think.
|
||||
thing_id = thing_id.id
|
||||
|
||||
thing_cache = self.caches[thing_type]
|
||||
|
@ -1563,6 +1582,12 @@ class PhotoDB(
|
|||
yield thing
|
||||
|
||||
def get_things_by_id(self, thing_type, thing_ids):
|
||||
'''
|
||||
Given multiple IDs, this method will find which ones are in the cache
|
||||
and which ones need to be selected from the db.
|
||||
This is better than calling get_thing_by_id in a loop because we can
|
||||
use a single SQL select to get batches of up to 999 items.
|
||||
'''
|
||||
thing_map = _THING_CLASSES[thing_type]
|
||||
thing_class = thing_map['class']
|
||||
thing_cache = self.caches[thing_type]
|
||||
|
|
Loading…
Reference in a new issue