Add tag._cached_synonyms to speed up future calls.
This commit is contained in:
		
							parent
							
								
									a4e5933f39
								
							
						
					
					
						commit
						bdfe16f6a3
					
				
					 1 changed files with 15 additions and 2 deletions
				
			
		|  | @ -1184,7 +1184,10 @@ class Photo(ObjectBase): | ||||||
|         tag = self.photodb.get_tag(name=tag) |         tag = self.photodb.get_tag(name=tag) | ||||||
| 
 | 
 | ||||||
|         self.photodb.log.info('Removing %s from %s.', tag, self) |         self.photodb.log.info('Removing %s from %s.', tag, self) | ||||||
|         pairs = {'photoid': self.id, 'tagid': tag.id} |         pairs = { | ||||||
|  |             'photoid': self.id, | ||||||
|  |             'tagid': tag.id, | ||||||
|  |         } | ||||||
|         self.photodb.sql_delete(table='photo_tag_rel', pairs=pairs) |         self.photodb.sql_delete(table='photo_tag_rel', pairs=pairs) | ||||||
| 
 | 
 | ||||||
|         data = { |         data = { | ||||||
|  | @ -1330,6 +1333,8 @@ class Tag(ObjectBase, GroupableMixin): | ||||||
| 
 | 
 | ||||||
|         self.group_getter_many = self.photodb.get_tags_by_id |         self.group_getter_many = self.photodb.get_tags_by_id | ||||||
| 
 | 
 | ||||||
|  |         self._cached_synonyms = None | ||||||
|  | 
 | ||||||
|     def __lt__(self, other): |     def __lt__(self, other): | ||||||
|         return self.name < other.name |         return self.name < other.name | ||||||
| 
 | 
 | ||||||
|  | @ -1438,6 +1443,9 @@ class Tag(ObjectBase, GroupableMixin): | ||||||
|         } |         } | ||||||
|         self.photodb.sql_insert(table='tag_synonyms', data=data) |         self.photodb.sql_insert(table='tag_synonyms', data=data) | ||||||
| 
 | 
 | ||||||
|  |         if self._cached_synonyms is not None: | ||||||
|  |             self._cached_synonyms.add(synname) | ||||||
|  | 
 | ||||||
|         return synname |         return synname | ||||||
| 
 | 
 | ||||||
|     @decorators.required_feature('tag.edit') |     @decorators.required_feature('tag.edit') | ||||||
|  | @ -1536,11 +1544,15 @@ class Tag(ObjectBase, GroupableMixin): | ||||||
|         self._uncache() |         self._uncache() | ||||||
| 
 | 
 | ||||||
|     def get_synonyms(self): |     def get_synonyms(self): | ||||||
|  |         if self._cached_synonyms is not None: | ||||||
|  |             return self._cached_synonyms | ||||||
|  | 
 | ||||||
|         syn_rows = self.photodb.sql_select( |         syn_rows = self.photodb.sql_select( | ||||||
|             'SELECT name FROM tag_synonyms WHERE mastername == ?', |             'SELECT name FROM tag_synonyms WHERE mastername == ?', | ||||||
|             [self.name] |             [self.name] | ||||||
|         ) |         ) | ||||||
|         synonyms = set(name for (name,) in syn_rows) |         synonyms = set(name for (name,) in syn_rows) | ||||||
|  |         self._cached_synonyms = synonyms | ||||||
|         return synonyms |         return synonyms | ||||||
| 
 | 
 | ||||||
|     def jsonify(self, include_synonyms=False, minimal=False): |     def jsonify(self, include_synonyms=False, minimal=False): | ||||||
|  | @ -1601,7 +1613,8 @@ class Tag(ObjectBase, GroupableMixin): | ||||||
| 
 | 
 | ||||||
|         self.photodb.caches['tag_exports'].clear() |         self.photodb.caches['tag_exports'].clear() | ||||||
|         self.photodb.sql_delete(table='tag_synonyms', pairs={'name': synname}) |         self.photodb.sql_delete(table='tag_synonyms', pairs={'name': synname}) | ||||||
| 
 |         if self._cached_synonyms is not None: | ||||||
|  |             self._cached_synonyms.remove(synname) | ||||||
|         return synname |         return synname | ||||||
| 
 | 
 | ||||||
|     @decorators.required_feature('tag.edit') |     @decorators.required_feature('tag.edit') | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue