Add created column to albums, bookmarks, tags.
This commit is contained in:
		
							parent
							
								
									ca74e2e1d4
								
							
						
					
					
						commit
						49f3f7a208
					
				
					 4 changed files with 86 additions and 3 deletions
				
			
		|  | @ -41,7 +41,7 @@ ffmpeg = _load_ffmpeg() | ||||||
| 
 | 
 | ||||||
| # Database ######################################################################################### | # Database ######################################################################################### | ||||||
| 
 | 
 | ||||||
| DATABASE_VERSION = 16 | DATABASE_VERSION = 17 | ||||||
| DB_VERSION_PRAGMA = f''' | DB_VERSION_PRAGMA = f''' | ||||||
| PRAGMA user_version = {DATABASE_VERSION}; | PRAGMA user_version = {DATABASE_VERSION}; | ||||||
| ''' | ''' | ||||||
|  | @ -72,6 +72,7 @@ CREATE TABLE IF NOT EXISTS albums( | ||||||
|     id TEXT PRIMARY KEY NOT NULL, |     id TEXT PRIMARY KEY NOT NULL, | ||||||
|     title TEXT, |     title TEXT, | ||||||
|     description TEXT, |     description TEXT, | ||||||
|  |     created INT, | ||||||
|     author_id TEXT, |     author_id TEXT, | ||||||
|     FOREIGN KEY(author_id) REFERENCES users(id) |     FOREIGN KEY(author_id) REFERENCES users(id) | ||||||
| ); | ); | ||||||
|  | @ -82,6 +83,7 @@ CREATE TABLE IF NOT EXISTS bookmarks( | ||||||
|     id TEXT PRIMARY KEY NOT NULL, |     id TEXT PRIMARY KEY NOT NULL, | ||||||
|     title TEXT, |     title TEXT, | ||||||
|     url TEXT, |     url TEXT, | ||||||
|  |     created INT, | ||||||
|     author_id TEXT, |     author_id TEXT, | ||||||
|     FOREIGN KEY(author_id) REFERENCES users(id) |     FOREIGN KEY(author_id) REFERENCES users(id) | ||||||
| ); | ); | ||||||
|  | @ -122,6 +124,7 @@ CREATE TABLE IF NOT EXISTS tags( | ||||||
|     id TEXT PRIMARY KEY NOT NULL, |     id TEXT PRIMARY KEY NOT NULL, | ||||||
|     name TEXT NOT NULL, |     name TEXT NOT NULL, | ||||||
|     description TEXT, |     description TEXT, | ||||||
|  |     created INT, | ||||||
|     author_id TEXT, |     author_id TEXT, | ||||||
|     FOREIGN KEY(author_id) REFERENCES users(id) |     FOREIGN KEY(author_id) REFERENCES users(id) | ||||||
| ); | ); | ||||||
|  |  | ||||||
|  | @ -273,6 +273,7 @@ class Album(ObjectBase, GroupableMixin): | ||||||
|         self.id = db_row['id'] |         self.id = db_row['id'] | ||||||
|         self.title = self.normalize_title(db_row['title']) |         self.title = self.normalize_title(db_row['title']) | ||||||
|         self.description = self.normalize_description(db_row['description']) |         self.description = self.normalize_description(db_row['description']) | ||||||
|  |         self.created = db_row['created'] | ||||||
|         self.author_id = self.normalize_author_id(db_row['author_id']) |         self.author_id = self.normalize_author_id(db_row['author_id']) | ||||||
| 
 | 
 | ||||||
|         self.group_getter_many = self.photodb.get_albums_by_id |         self.group_getter_many = self.photodb.get_albums_by_id | ||||||
|  | @ -520,6 +521,7 @@ class Album(ObjectBase, GroupableMixin): | ||||||
|             'id': self.id, |             'id': self.id, | ||||||
|             'description': self.description, |             'description': self.description, | ||||||
|             'title': self.title, |             'title': self.title, | ||||||
|  |             'created': self.created, | ||||||
|             'author': self.get_author().jsonify() if self.author_id else None, |             'author': self.get_author().jsonify() if self.author_id else None, | ||||||
|         } |         } | ||||||
|         if not minimal: |         if not minimal: | ||||||
|  | @ -635,6 +637,7 @@ class Bookmark(ObjectBase): | ||||||
|         self.id = db_row['id'] |         self.id = db_row['id'] | ||||||
|         self.title = self.normalize_title(db_row['title']) |         self.title = self.normalize_title(db_row['title']) | ||||||
|         self.url = self.normalize_url(db_row['url']) |         self.url = self.normalize_url(db_row['url']) | ||||||
|  |         self.created = db_row['created'] | ||||||
|         self.author_id = self.normalize_author_id(db_row['author_id']) |         self.author_id = self.normalize_author_id(db_row['author_id']) | ||||||
| 
 | 
 | ||||||
|     def __repr__(self): |     def __repr__(self): | ||||||
|  | @ -714,6 +717,7 @@ class Bookmark(ObjectBase): | ||||||
|             'id': self.id, |             'id': self.id, | ||||||
|             'author': self.get_author().jsonify() if self.author_id else None, |             'author': self.get_author().jsonify() if self.author_id else None, | ||||||
|             'url': self.url, |             'url': self.url, | ||||||
|  |             'created': self.created, | ||||||
|             'title': self.title, |             'title': self.title, | ||||||
|         } |         } | ||||||
|         return j |         return j | ||||||
|  | @ -1321,6 +1325,7 @@ class Tag(ObjectBase, GroupableMixin): | ||||||
|         # from previous character / length rules. |         # from previous character / length rules. | ||||||
|         self.name = db_row['name'] |         self.name = db_row['name'] | ||||||
|         self.description = self.normalize_description(db_row['description']) |         self.description = self.normalize_description(db_row['description']) | ||||||
|  |         self.created = db_row['created'] | ||||||
|         self.author_id = self.normalize_author_id(db_row['author_id']) |         self.author_id = self.normalize_author_id(db_row['author_id']) | ||||||
| 
 | 
 | ||||||
|         self.group_getter_many = self.photodb.get_tags_by_id |         self.group_getter_many = self.photodb.get_tags_by_id | ||||||
|  | @ -1543,6 +1548,7 @@ class Tag(ObjectBase, GroupableMixin): | ||||||
|             'type': 'tag', |             'type': 'tag', | ||||||
|             'id': self.id, |             'id': self.id, | ||||||
|             'name': self.name, |             'name': self.name, | ||||||
|  |             'created': self.created, | ||||||
|         } |         } | ||||||
|         if not minimal: |         if not minimal: | ||||||
|             j['author'] = self.get_author().jsonify() if self.author_id else None |             j['author'] = self.get_author().jsonify() if self.author_id else None | ||||||
|  |  | ||||||
|  | @ -109,6 +109,7 @@ class PDBAlbumMixin: | ||||||
|             'id': album_id, |             'id': album_id, | ||||||
|             'title': title, |             'title': title, | ||||||
|             'description': description, |             'description': description, | ||||||
|  |             'created': helpers.now(), | ||||||
|             'author_id': author_id, |             'author_id': author_id, | ||||||
|         } |         } | ||||||
|         self.sql_insert(table='albums', data=data) |         self.sql_insert(table='albums', data=data) | ||||||
|  | @ -196,9 +197,10 @@ class PDBBookmarkMixin: | ||||||
| 
 | 
 | ||||||
|         data = { |         data = { | ||||||
|             'id': bookmark_id, |             'id': bookmark_id, | ||||||
|             'author_id': author_id, |  | ||||||
|             'title': title, |             'title': title, | ||||||
|             'url': url, |             'url': url, | ||||||
|  |             'created': helpers.now(), | ||||||
|  |             'author_id': author_id, | ||||||
|         } |         } | ||||||
|         self.sql_insert(table='bookmarks', data=data) |         self.sql_insert(table='bookmarks', data=data) | ||||||
| 
 | 
 | ||||||
|  | @ -411,6 +413,10 @@ class PDBCacheManagerMixin: | ||||||
|                 yield thing |                 yield thing | ||||||
| 
 | 
 | ||||||
|     def get_things_by_sql(self, thing_type, query, bindings=None): |     def get_things_by_sql(self, thing_type, query, bindings=None): | ||||||
|  |         ''' | ||||||
|  |         Use an arbitrary SQL query to select things from the database. | ||||||
|  |         Your query should *only* select the id column. | ||||||
|  |         ''' | ||||||
|         thing_rows = self.sql_select(query, bindings) |         thing_rows = self.sql_select(query, bindings) | ||||||
|         thing_ids = (thing_id for (thing_id,) in thing_rows) |         thing_ids = (thing_id for (thing_id,) in thing_rows) | ||||||
|         return self.get_things_by_id(thing_type, thing_ids) |         return self.get_things_by_id(thing_type, thing_ids) | ||||||
|  | @ -1283,6 +1289,7 @@ class PDBTagMixin: | ||||||
|             'id': tag_id, |             'id': tag_id, | ||||||
|             'name': tagname, |             'name': tagname, | ||||||
|             'description': description, |             'description': description, | ||||||
|  |             'created': helpers.now(), | ||||||
|             'author_id': author_id, |             'author_id': author_id, | ||||||
|         } |         } | ||||||
|         self.sql_insert(table='tags', data=data) |         self.sql_insert(table='tags', data=data) | ||||||
|  | @ -1469,8 +1476,8 @@ class PDBUserMixin: | ||||||
|             'id': user_id, |             'id': user_id, | ||||||
|             'username': username, |             'username': username, | ||||||
|             'password': hashed_password, |             'password': hashed_password, | ||||||
|             'created': helpers.now(), |  | ||||||
|             'display_name': display_name, |             'display_name': display_name, | ||||||
|  |             'created': helpers.now(), | ||||||
|         } |         } | ||||||
|         self.sql_insert(table='users', data=data) |         self.sql_insert(table='users', data=data) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -505,6 +505,73 @@ def upgrade_15_to_16(photodb): | ||||||
|         basename = os.path.basename(filepath) |         basename = os.path.basename(filepath) | ||||||
|         photodb.sql_execute('UPDATE photos SET basename = ? WHERE id == ?', [basename, id]) |         photodb.sql_execute('UPDATE photos SET basename = ? WHERE id == ?', [basename, id]) | ||||||
| 
 | 
 | ||||||
|  | def upgrade_16_to_17(photodb): | ||||||
|  |     ''' | ||||||
|  |     Added the created column to albums, bookmarks, tags. | ||||||
|  |     ''' | ||||||
|  |     m = Migrator(photodb) | ||||||
|  |     m.tables['albums']['create'] = ''' | ||||||
|  |     CREATE TABLE albums( | ||||||
|  |         id TEXT PRIMARY KEY NOT NULL, | ||||||
|  |         title TEXT, | ||||||
|  |         description TEXT, | ||||||
|  |         created INT, | ||||||
|  |         author_id TEXT, | ||||||
|  |         FOREIGN KEY(author_id) REFERENCES users(id) | ||||||
|  |     ); | ||||||
|  |     ''' | ||||||
|  |     m.tables['albums']['transfer'] = ''' | ||||||
|  |     INSERT INTO albums SELECT | ||||||
|  |         id, | ||||||
|  |         title, | ||||||
|  |         description, | ||||||
|  |         0, | ||||||
|  |         author_id | ||||||
|  |     FROM albums_old; | ||||||
|  |     ''' | ||||||
|  | 
 | ||||||
|  |     m.tables['bookmarks']['create'] = ''' | ||||||
|  |     CREATE TABLE bookmarks( | ||||||
|  |         id TEXT PRIMARY KEY NOT NULL, | ||||||
|  |         title TEXT, | ||||||
|  |         url TEXT, | ||||||
|  |         created INT, | ||||||
|  |         author_id TEXT, | ||||||
|  |         FOREIGN KEY(author_id) REFERENCES users(id) | ||||||
|  |     ); | ||||||
|  |     ''' | ||||||
|  |     m.tables['bookmarks']['transfer'] = ''' | ||||||
|  |     INSERT INTO bookmarks SELECT | ||||||
|  |         id, | ||||||
|  |         title, | ||||||
|  |         url, | ||||||
|  |         0, | ||||||
|  |         author_id | ||||||
|  |     FROM bookmarks_old; | ||||||
|  |     ''' | ||||||
|  | 
 | ||||||
|  |     m.tables['tags']['create'] = ''' | ||||||
|  |     CREATE TABLE tags( | ||||||
|  |         id TEXT PRIMARY KEY NOT NULL, | ||||||
|  |         name TEXT NOT NULL, | ||||||
|  |         description TEXT, | ||||||
|  |         created INT, | ||||||
|  |         author_id TEXT, | ||||||
|  |         FOREIGN KEY(author_id) REFERENCES users(id) | ||||||
|  |     ); | ||||||
|  |     ''' | ||||||
|  |     m.tables['tags']['transfer'] = ''' | ||||||
|  |     INSERT INTO tags SELECT | ||||||
|  |         id, | ||||||
|  |         name, | ||||||
|  |         description, | ||||||
|  |         0, | ||||||
|  |         author_id | ||||||
|  |     FROM tags_old; | ||||||
|  |     ''' | ||||||
|  | 
 | ||||||
|  |     m.go() | ||||||
|  | 
 | ||||||
| def upgrade_all(data_directory): | def upgrade_all(data_directory): | ||||||
|     ''' |     ''' | ||||||
|     Given the directory containing a phototagger database, apply all of the |     Given the directory containing a phototagger database, apply all of the | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue