ensure new users get a default collection on signup and any missing users get them too

This commit is contained in:
2026-06-07 13:09:17 +03:00
parent 84dbaa2cd8
commit 7b16ac91ed
2 changed files with 27 additions and 4 deletions

View File

@@ -162,6 +162,13 @@ def clear_api_limits():
for l in limits:
l.delete()
def ensure_default_collection():
from .db import db
from .models import BookmarkCollections
with db.transaction():
for missing_user in BookmarkCollections.get_users_without_default():
BookmarkCollections.create_default(missing_user)
cache = Cache()
def create_app():
@@ -243,6 +250,8 @@ def create_app():
reparse_babycode()
ensure_default_collection()
bind_default_badges(app.config['BADGES_PATH'])
app.config['SESSION_COOKIE_SECURE'] = True

View File

@@ -506,10 +506,24 @@ class BookmarkCollections(Model):
@classmethod
def create_default(cls, user_id):
q = """INSERT INTO bookmark_collections (user_id, name, is_default, sort_order)
VALUES (?, "Bookmarks", 1, 0) RETURNING id
return cls.create({
'user_id': user_id,
'name': 'Bookmarks',
'is_default': True,
'sort_order': 0,
})
@staticmethod
def get_users_without_default():
q = """
SELECT users.id FROM users
WHERE NOT EXISTS (
SELECT 1 FROM bookmark_collections bc
WHERE bc.user_id = users.id
AND bc.is_default = 1
)
"""
res = db.fetch_one(q, user_id)
return [row['id'] for row in db.query(q)]
@classmethod
def get_for_user(cls, user_id):