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 |         return self._cached_frozen_children | ||||||
| 
 | 
 | ||||||
|     def get_cached_instance(self, thing_type, db_row): |     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_map = _THING_CLASSES[thing_type] | ||||||
| 
 | 
 | ||||||
|         thing_table = thing_map['table'] |         thing_table = thing_map['table'] | ||||||
|  | @ -1528,10 +1537,20 @@ class PhotoDB( | ||||||
|             yield thing |             yield thing | ||||||
| 
 | 
 | ||||||
|     def get_thing_by_id(self, thing_type, thing_id): |     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_map = _THING_CLASSES[thing_type] | ||||||
| 
 | 
 | ||||||
|         thing_class = thing_map['class'] |         thing_class = thing_map['class'] | ||||||
|         if isinstance(thing_id, thing_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_id = thing_id.id | ||||||
| 
 | 
 | ||||||
|         thing_cache = self.caches[thing_type] |         thing_cache = self.caches[thing_type] | ||||||
|  | @ -1563,6 +1582,12 @@ class PhotoDB( | ||||||
|             yield thing |             yield thing | ||||||
| 
 | 
 | ||||||
|     def get_things_by_id(self, thing_type, thing_ids): |     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_map = _THING_CLASSES[thing_type] | ||||||
|         thing_class = thing_map['class'] |         thing_class = thing_map['class'] | ||||||
|         thing_cache = self.caches[thing_type] |         thing_cache = self.caches[thing_type] | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue