make sure list names are unique per user
This commit is contained in:
parent
4571d5b636
commit
ba28d78280
2 changed files with 20 additions and 2 deletions
19
oml/setup.py
19
oml/setup.py
|
@ -449,6 +449,7 @@ def update_database():
|
||||||
'CREATE UNIQUE INDEX listitem_index on listitem(list_id, item_id)',
|
'CREATE UNIQUE INDEX listitem_index on listitem(list_id, item_id)',
|
||||||
'CREATE UNIQUE INDEX useritem_index on useritem(user_id, item_id)',
|
'CREATE UNIQUE INDEX useritem_index on useritem(user_id, item_id)',
|
||||||
'CREATE UNIQUE INDEX user_metadata_index ON user_metadata(item_id, user_id)',
|
'CREATE UNIQUE INDEX user_metadata_index ON user_metadata(item_id, user_id)',
|
||||||
|
'CREATE UNIQUE INDEX list_username_index on list(user_id, name)',
|
||||||
]
|
]
|
||||||
layout = db.get_layout()
|
layout = db.get_layout()
|
||||||
sql = []
|
sql = []
|
||||||
|
@ -469,6 +470,8 @@ def update_database():
|
||||||
add_useritem_index()
|
add_useritem_index()
|
||||||
elif name == 'listitem_index':
|
elif name == 'listitem_index':
|
||||||
add_listitem_index()
|
add_listitem_index()
|
||||||
|
elif name == 'list_username_index':
|
||||||
|
add_list_username_index()
|
||||||
else:
|
else:
|
||||||
sql.append(index)
|
sql.append(index)
|
||||||
index_names.add(name)
|
index_names.add(name)
|
||||||
|
@ -512,3 +515,19 @@ def add_useritem_index():
|
||||||
sql = 'CREATE UNIQUE INDEX IF NOT EXISTS useritem_index on useritem(user_id,item_id)'
|
sql = 'CREATE UNIQUE INDEX IF NOT EXISTS useritem_index on useritem(user_id,item_id)'
|
||||||
session.execute(sql)
|
session.execute(sql)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
|
def add_list_username_index():
|
||||||
|
from sqlalchemy.orm import load_only
|
||||||
|
import user.models
|
||||||
|
with db.session() as session:
|
||||||
|
lists = {}
|
||||||
|
for l in user.models.List.query.order_by('id'):
|
||||||
|
if l.public_id in lists:
|
||||||
|
ids = [i.id for i in l.get_items().options(load_only('id'))]
|
||||||
|
lists[l.public_id].add_items(ids)
|
||||||
|
session.delete(l)
|
||||||
|
else:
|
||||||
|
lists[l.public_id] = l
|
||||||
|
session.commit()
|
||||||
|
sql = 'CREATE UNIQUE INDEX IF NOT EXISTS list_username_index on list(user_id, name)'
|
||||||
|
session.connection().execute(sql)
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
from contextlib import closing
|
from contextlib import closing
|
||||||
import base64
|
import base64
|
||||||
import hashlib
|
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import tarfile
|
import tarfile
|
||||||
|
@ -568,5 +567,5 @@ def migrate_11():
|
||||||
def migrate_12():
|
def migrate_12():
|
||||||
db.run_sql([
|
db.run_sql([
|
||||||
'DROP TABLE IF EXISTS transfer'
|
'DROP TABLE IF EXISTS transfer'
|
||||||
]),
|
])
|
||||||
return 12
|
return 12
|
||||||
|
|
Loading…
Add table
Reference in a new issue