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_VERSION = 16
|
||||
DATABASE_VERSION = 17
|
||||
DB_VERSION_PRAGMA = f'''
|
||||
PRAGMA user_version = {DATABASE_VERSION};
|
||||
'''
|
||||
|
@ -72,6 +72,7 @@ CREATE TABLE IF NOT EXISTS albums(
|
|||
id TEXT PRIMARY KEY NOT NULL,
|
||||
title TEXT,
|
||||
description TEXT,
|
||||
created INT,
|
||||
author_id TEXT,
|
||||
FOREIGN KEY(author_id) REFERENCES users(id)
|
||||
);
|
||||
|
@ -82,6 +83,7 @@ CREATE TABLE IF NOT EXISTS bookmarks(
|
|||
id TEXT PRIMARY KEY NOT NULL,
|
||||
title TEXT,
|
||||
url TEXT,
|
||||
created INT,
|
||||
author_id TEXT,
|
||||
FOREIGN KEY(author_id) REFERENCES users(id)
|
||||
);
|
||||
|
@ -122,6 +124,7 @@ CREATE TABLE IF NOT EXISTS 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)
|
||||
);
|
||||
|
|
|
@ -273,6 +273,7 @@ class Album(ObjectBase, GroupableMixin):
|
|||
self.id = db_row['id']
|
||||
self.title = self.normalize_title(db_row['title'])
|
||||
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.group_getter_many = self.photodb.get_albums_by_id
|
||||
|
@ -520,6 +521,7 @@ class Album(ObjectBase, GroupableMixin):
|
|||
'id': self.id,
|
||||
'description': self.description,
|
||||
'title': self.title,
|
||||
'created': self.created,
|
||||
'author': self.get_author().jsonify() if self.author_id else None,
|
||||
}
|
||||
if not minimal:
|
||||
|
@ -635,6 +637,7 @@ class Bookmark(ObjectBase):
|
|||
self.id = db_row['id']
|
||||
self.title = self.normalize_title(db_row['title'])
|
||||
self.url = self.normalize_url(db_row['url'])
|
||||
self.created = db_row['created']
|
||||
self.author_id = self.normalize_author_id(db_row['author_id'])
|
||||
|
||||
def __repr__(self):
|
||||
|
@ -714,6 +717,7 @@ class Bookmark(ObjectBase):
|
|||
'id': self.id,
|
||||
'author': self.get_author().jsonify() if self.author_id else None,
|
||||
'url': self.url,
|
||||
'created': self.created,
|
||||
'title': self.title,
|
||||
}
|
||||
return j
|
||||
|
@ -1321,6 +1325,7 @@ class Tag(ObjectBase, GroupableMixin):
|
|||
# from previous character / length rules.
|
||||
self.name = db_row['name']
|
||||
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.group_getter_many = self.photodb.get_tags_by_id
|
||||
|
@ -1543,6 +1548,7 @@ class Tag(ObjectBase, GroupableMixin):
|
|||
'type': 'tag',
|
||||
'id': self.id,
|
||||
'name': self.name,
|
||||
'created': self.created,
|
||||
}
|
||||
if not minimal:
|
||||
j['author'] = self.get_author().jsonify() if self.author_id else None
|
||||
|
|
|
@ -109,6 +109,7 @@ class PDBAlbumMixin:
|
|||
'id': album_id,
|
||||
'title': title,
|
||||
'description': description,
|
||||
'created': helpers.now(),
|
||||
'author_id': author_id,
|
||||
}
|
||||
self.sql_insert(table='albums', data=data)
|
||||
|
@ -196,9 +197,10 @@ class PDBBookmarkMixin:
|
|||
|
||||
data = {
|
||||
'id': bookmark_id,
|
||||
'author_id': author_id,
|
||||
'title': title,
|
||||
'url': url,
|
||||
'created': helpers.now(),
|
||||
'author_id': author_id,
|
||||
}
|
||||
self.sql_insert(table='bookmarks', data=data)
|
||||
|
||||
|
@ -411,6 +413,10 @@ class PDBCacheManagerMixin:
|
|||
yield thing
|
||||
|
||||
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_ids = (thing_id for (thing_id,) in thing_rows)
|
||||
return self.get_things_by_id(thing_type, thing_ids)
|
||||
|
@ -1283,6 +1289,7 @@ class PDBTagMixin:
|
|||
'id': tag_id,
|
||||
'name': tagname,
|
||||
'description': description,
|
||||
'created': helpers.now(),
|
||||
'author_id': author_id,
|
||||
}
|
||||
self.sql_insert(table='tags', data=data)
|
||||
|
@ -1469,8 +1476,8 @@ class PDBUserMixin:
|
|||
'id': user_id,
|
||||
'username': username,
|
||||
'password': hashed_password,
|
||||
'created': helpers.now(),
|
||||
'display_name': display_name,
|
||||
'created': helpers.now(),
|
||||
}
|
||||
self.sql_insert(table='users', data=data)
|
||||
|
||||
|
|
|
@ -505,6 +505,73 @@ def upgrade_15_to_16(photodb):
|
|||
basename = os.path.basename(filepath)
|
||||
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):
|
||||
'''
|
||||
Given the directory containing a phototagger database, apply all of the
|
||||
|
|
Loading…
Reference in a new issue