-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase_examples.py
More file actions
125 lines (103 loc) · 4.78 KB
/
Copy pathdatabase_examples.py
File metadata and controls
125 lines (103 loc) · 4.78 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import asyncio
import datetime
import random
from typing import List
# Подключение классов для работы с базой
from database import connect
from database.user import User
from database.state_change import StateChange
from database.advice import Advice
# Рантайм для работы с async, не пригодится для написания функций
loop = asyncio.get_event_loop()
# Примеры
async def main():
# Подключение к базе данных
await connect.init()
# print(await User.is_registered(1235))
# Получение пользователя по Telegram ID
user = await User.get(12345)
print('Пользователь', user)
# Назначение времени подъема
await user.set_time_to_up(datetime.time.fromisoformat('06:00'))
# Назначение времени сна
await user.set_time_to_sleep(datetime.time.fromisoformat('22:00'))
# Назначение времени уведомлений
await user.set_notification_time([
datetime.time.fromisoformat('10:00'),
datetime.time.fromisoformat('16:00'),
datetime.time.fromisoformat('20:00'),
])
print('После изменений', user.notification_time)
# Работа с отметками (настроением 1-5)
# Получение всех отметок пользователя
print('Отметки', await user.get_all_marks())
# Добавление отметок
await user.add_mark(3)
await user.add_mark(4)
await user.add_mark(5)
print('После добавлений', await user.get_all_marks())
# Получение и удаление последней метки
mark = await user.get_last_mark()
print('Последняя отметка', mark)
if mark is not None:
# Если отметка существует - удаляем
await mark.delete()
print('После удаления последней', await user.get_all_marks())
# Добавление статусов (встал/лег)
await user.add_state_change(StateChange.WAKE_UP)
await user.add_state_change(StateChange.FALL_ASLEEP)
print('Все статусы', await user.get_all_states())
last_state = await user.get_last_state()
print('Последний статус', last_state)
await last_state.delete()
print('Статусы после удаления последнего', await user.get_all_states())
# # Работа с советами
# print("Все советы", await Advice.get_all_advices())
# await Advice.create(3, "Не ешь перед сном")
# await Advice.create(5, "Не спи днем")
# await Advice.create(5, "Больше занимайся спортом")
# print("Все советы после добавлений", await Advice.get_all_advices())
# print("Советы по mark=5", await Advice.get_advices_by_mark(5))
#
# # Отдельный пример
# import random
#
# # получение советов по состоянию 3
# advices = await Advice.get_advices_by_mark(3)
#
# # получение рандомного совета
# advice = random.choice(advices)
#
# # advice.uid - его ID
# # advice.advice - сам совет, str
# # advice.mark - состояние
#
# # удаление совета
# await advice.delete()
#
# # либо можно удалить через ID
# await Advice.delete_by_uid(advice.uid)
async def check_changes():
await connect.init()
# получение советов по состоянию 5 (отлично)
# игнорируя время
advices = await Advice.get_advices_by_mark(5)
print(len(advices), random.choice(advices))
# получение по состоянию 5 (отлично) и по текущему часу;
# например, если сейчас 20:08, то будут получены советы
# в которых указан час 20 (в доке указаны как 20:00-5:00)
# и состояние 5
advices = await Advice.get_advices_by_mark_and_hour(5)
print(len(advices), random.choice(advices))
# получение только по времени (игнорируется состояние)
advices = await Advice.get_advices_by_hour()
print(len(advices), random.choice(advices))
async def check_advices():
await connect.init()
u = await User.get(12345)
last = await u.get_last_state()
is_wake_up = last.state == StateChange
print(await u.get_last_7_marks())
print(await u.get_last_7_state_changes())
# Запуск async функции (примера)
loop.run_until_complete(check_advices())