-
Notifications
You must be signed in to change notification settings - Fork 52
/
Copy pathcursor.py
54 lines (44 loc) · 1.54 KB
/
cursor.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from typing import List, Optional, Tuple
from sqlalchemy.orm.session import Session
from app.database.models import User, UserSettings
def get_cursor_settings(
session: Session,
user_id: int,
) -> Tuple[Optional[List[str]], Optional[int], Optional[str], Optional[int]]:
"""Retrieves cursor settings from the database.
Args:
session (Session): the database.
user_id (int, optional): the users' id.
Returns:
Tuple[str, Optional[List[str]], Optional[int],
str, Optional[str], Optional[int]]: the cursor settings.
"""
primary_cursor, secondary_cursor = None, None
cursor_settings = (
session.query(UserSettings).filter_by(user_id=user_id).first()
)
if cursor_settings:
primary_cursor = cursor_settings.primary_cursor
secondary_cursor = cursor_settings.secondary_cursor
return primary_cursor, secondary_cursor
def save_cursor_settings(
session: Session,
user: User,
cursor_choices: List[str],
):
"""Saves cursor choices in the db.
Args:
session (Session): the database.
user (User): current user.
cursor_choices (List[str]): primary and secondary cursors.
"""
cursor_settings = (
session.query(UserSettings).filter_by(user_id=user.user_id).first()
)
if cursor_settings:
session.query(UserSettings).filter_by(
user_id=cursor_settings.user_id,
).update(cursor_choices)
else:
session.merge(UserSettings(user_id=user.user_id, **cursor_choices))
session.commit()