mirror of
https://github.com/EDeev/y.calendarkin.git
synced 2026-06-15 19:01:00 +03:00
159 lines
7.9 KiB
Python
159 lines
7.9 KiB
Python
from pytz import timezone
|
||
import sqlite3
|
||
|
||
|
||
class Users:
|
||
def __init__(self, database):
|
||
"""Подключаемся к БД и сохраняем курсор соединения"""
|
||
self.connection = sqlite3.connect(database)
|
||
self.cursor = self.connection.cursor()
|
||
|
||
# КОМАНДЫ USER
|
||
def user_exists(self, user_id):
|
||
"""Проверяем, есть ли уже пользователь в базе"""
|
||
with self.connection:
|
||
result = self.cursor.execute(f'SELECT * FROM `user` WHERE `user_id` = ?', (user_id,)).fetchall()
|
||
return bool(len(result))
|
||
|
||
def all_users(self):
|
||
"""Список айди"""
|
||
with self.connection:
|
||
return self.cursor.execute(f'SELECT `id` FROM `user`').fetchall()
|
||
|
||
def add_user(self, user_id):
|
||
"""Добавляем нового пользователя"""
|
||
with self.connection:
|
||
return self.cursor.execute(f"INSERT INTO `user` (`user_id`) VALUES(?)", (user_id,))
|
||
|
||
def get_user_id(self, user_id):
|
||
"""Получаем короткое айди юзера"""
|
||
with self.connection:
|
||
return self.cursor.execute(f'SELECT `id` FROM `user` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
|
||
|
||
def get_first_user_id(self, user_id):
|
||
"""Получаем длинное айди юзера"""
|
||
with self.connection:
|
||
return self.cursor.execute(f'SELECT `user_id` FROM `user` WHERE `id` = ?', (user_id,)).fetchone()[0]
|
||
|
||
# КОМАНДЫ URL
|
||
def url_exists(self, user_id):
|
||
"""Проверяем, есть ли данные уже в базе"""
|
||
with self.connection:
|
||
result = self.cursor.execute(f'SELECT * FROM `url` WHERE `user_id` = ?', (user_id,)).fetchall()
|
||
return bool(len(result))
|
||
|
||
def add_url(self, user_id, url_ical, time_zone):
|
||
"""Добавляем ссылку на календарь"""
|
||
with self.connection:
|
||
return self.cursor.execute(f"INSERT INTO `url` (`user_id`, `url_ical`, `time_zone`) VALUES(?, ?, ?)",
|
||
(user_id, url_ical, time_zone))
|
||
|
||
def update_status(self, user_id):
|
||
"""Обновляем статус рассылки уведомлений"""
|
||
with self.connection:
|
||
status = self.cursor.execute(f'SELECT `status` FROM `url` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
|
||
return self.cursor.execute("UPDATE `url` SET `status` = ? WHERE `user_id` = ?", (not status, user_id))
|
||
|
||
def update_url(self, user_id, url_ical, time_zone):
|
||
"""Обновляем ссылку и часовой пояс в базе"""
|
||
with self.connection:
|
||
return self.cursor.execute("UPDATE `url` SET `url_ical` = ?, `time_zone` = ? WHERE `user_id` = ?",
|
||
(url_ical, time_zone, user_id))
|
||
|
||
def get_status(self, user_id):
|
||
"""Получаем статус работы"""
|
||
with self.connection:
|
||
return self.cursor.execute(f'SELECT `status` FROM `url` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
|
||
|
||
def get_url(self, user_id):
|
||
"""Получаем ссылку на календарь"""
|
||
with self.connection:
|
||
return self.cursor.execute(f'SELECT `url_ical` FROM `url` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
|
||
|
||
def get_tz(self, user_id):
|
||
"""Получаем указанный в календаре часовой пояс"""
|
||
with self.connection:
|
||
return timezone(self.cursor.execute(f'SELECT `time_zone` FROM `url` WHERE `user_id` = ?',
|
||
(user_id,)).fetchone()[0])
|
||
|
||
# ЗАКРЫТИЕ ВЫЗОВА
|
||
def close(self):
|
||
"""Закрываем соединение с БД"""
|
||
self.connection.close()
|
||
|
||
|
||
class Clock:
|
||
def __init__(self, database):
|
||
"""Подключаемся к БД и сохраняем курсор соединения"""
|
||
self.connection = sqlite3.connect(database)
|
||
self.cursor = self.connection.cursor()
|
||
|
||
# КОМАНДЫ ALARM
|
||
def clock_exists(self, user_id):
|
||
"""Проверяем, есть ли данные уже в базе"""
|
||
with self.connection:
|
||
result = self.cursor.execute(f'SELECT * FROM `alarm` WHERE `user_id` = ?', (user_id,)).fetchall()
|
||
return bool(len(result))
|
||
|
||
def add_clock(self, user_id):
|
||
"""Добавляем параметры уведомления"""
|
||
with self.connection:
|
||
return self.cursor.execute(f"INSERT INTO `alarm` (`user_id`, `alarm_1`, `alarm_2`) VALUES(?, ?, ?)",
|
||
(user_id, 15, 5))
|
||
|
||
# КОМАНДЫ ПОЛУЧЕНИЯ ССЫЛОК
|
||
def get_alarm(self, user_id):
|
||
"""Получаем задержки таймера"""
|
||
with self.connection:
|
||
return self.cursor.execute(f'SELECT `alarm_1`, `alarm_2` FROM `alarm` WHERE `user_id` = ?',
|
||
(user_id,)).fetchone()
|
||
|
||
def get_start(self, user_id):
|
||
"""Получаем статус уведомления в момент исполнения"""
|
||
with self.connection:
|
||
return self.cursor.execute(f'SELECT `start` FROM `alarm` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
|
||
|
||
def get_daily(self, user_id):
|
||
"""Получаем статус ежедневного уведомления"""
|
||
with self.connection:
|
||
return self.cursor.execute(f'SELECT `daily` FROM `alarm` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
|
||
|
||
def get_status2(self, user_id):
|
||
"""Получаем статус отправки второго уведомления"""
|
||
with self.connection:
|
||
return self.cursor.execute(f'SELECT `status_2` FROM `alarm` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
|
||
|
||
# КОМАНДЫ ОБНОВЛЕНИЯ БУЛЕВЫХ СТАТУСОВ
|
||
def update_daily(self, user_id):
|
||
"""Обновляем статус ежедневного уведомления"""
|
||
with self.connection:
|
||
daily = self.cursor.execute(f'SELECT `daily` FROM `alarm` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
|
||
return self.cursor.execute("UPDATE `alarm` SET `daily` = ? WHERE `user_id` = ?", (not daily, user_id))
|
||
|
||
def update_start(self, user_id):
|
||
"""Обновляем статус уведомления в момент исполнения"""
|
||
with self.connection:
|
||
start = self.cursor.execute(f'SELECT `start` FROM `alarm` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
|
||
return self.cursor.execute("UPDATE `alarm` SET `start` = ? WHERE `user_id` = ?", (not start, user_id))
|
||
|
||
# КОМАНДЫ ОБНОВЛЕНИЯ ВРЕМЕННОГО ДИАПАЗОНА
|
||
def update_alarm1(self, user_id, alarm_1):
|
||
"""Обновляем время первого оповещения"""
|
||
with self.connection:
|
||
return self.cursor.execute("UPDATE `alarm` SET `alarm_1` = ? WHERE `user_id` = ?", (alarm_1, user_id))
|
||
|
||
def update_alarm2(self, user_id, alarm_2):
|
||
"""Обновляем время второго оповещения"""
|
||
with self.connection:
|
||
return self.cursor.execute("UPDATE `alarm` SET `alarm_2` = ? WHERE `user_id` = ?", (alarm_2, user_id))
|
||
|
||
def update_status2(self, user_id):
|
||
"""Обновляем статус отправки второго уведомления"""
|
||
with self.connection:
|
||
status_2 = self.cursor.execute(f'SELECT `status_2` FROM `alarm` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
|
||
return self.cursor.execute("UPDATE `alarm` SET `status_2` = ? WHERE `user_id` = ?", (not status_2, user_id))
|
||
|
||
# ЗАКРЫТИЕ ВЫЗОВА
|
||
def close(self):
|
||
"""Закрываем соединение с БД"""
|
||
self.connection.close()
|