13
13
14
14
import mealie .db .migration_types
15
15
from alembic import op
16
+ from mealie .core .root_logger import get_logger
17
+
18
+ logger = get_logger ()
16
19
17
20
# revision identifiers, used by Alembic.
18
21
revision = "2298bb460ffd"
@@ -37,13 +40,20 @@ def find_user_id_for_group(group_id: UUID):
37
40
with session :
38
41
try :
39
42
# try to find an admin user
40
- user_id = session .execute (sa .text (stmt ).bindparams (group_id = group_id )).scalar_one ()
43
+ return session .execute (sa .text (stmt ).bindparams (group_id = group_id )).scalar_one ()
41
44
except orm .exc .NoResultFound :
45
+ pass
46
+
47
+ try :
42
48
# fallback to any user
43
- user_id = session .execute (
49
+ return session .execute (
44
50
sa .text ("SELECT id FROM users WHERE group_id=:group_id LIMIT 1" ).bindparams (group_id = group_id )
45
51
).scalar_one ()
46
- return user_id
52
+ except orm .exc .NoResultFound :
53
+ pass
54
+
55
+ # no user could be found
56
+ return None
47
57
48
58
49
59
def populate_shopping_list_users ():
@@ -54,11 +64,17 @@ def populate_shopping_list_users():
54
64
list_ids_and_group_ids = session .execute (sa .text ("SELECT id, group_id FROM shopping_lists" )).all ()
55
65
for list_id , group_id in list_ids_and_group_ids :
56
66
user_id = find_user_id_for_group (group_id )
57
- session .execute (
58
- sa .text (f"UPDATE shopping_lists SET user_id=:user_id WHERE id=:id" ).bindparams (
59
- user_id = user_id , id = list_id
67
+ if user_id :
68
+ session .execute (
69
+ sa .text (f"UPDATE shopping_lists SET user_id=:user_id WHERE id=:id" ).bindparams (
70
+ user_id = user_id , id = list_id
71
+ )
72
+ )
73
+ else :
74
+ logger .warning (
75
+ f"No user found for shopping list { list_id } with group { group_id } ; deleting shopping list"
60
76
)
61
- )
77
+ session . execute ( sa . text ( f"DELETE FROM shopping_lists WHERE id=:id" ). bindparams ( id = list_id ) )
62
78
63
79
64
80
def upgrade ():
0 commit comments