vkrepost_to_tg/code/sql.py
2024-02-12 18:26:35 +07:00

168 lines
8.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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('SELECT * FROM `user` WHERE `user_id` = ?', (user_id,)).fetchall()
return bool(len(result))
def add_user(self, user_id):
"""Добавляем нового пользователя"""
with self.connection:
return self.cursor.execute("INSERT INTO `user` (`user_id`) VALUES(?)", (user_id,))
def get_user_id(self, user_id):
"""Получаем короткое айди юзера"""
with self.connection:
return self.cursor.execute('SELECT `id` FROM `user` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
def get_tg_id(self, user_id):
"""Получаем длинное айди юзера"""
with self.connection:
return self.cursor.execute('SELECT `user_id` FROM `user` WHERE `id` = ?', (user_id,)).fetchone()[0]
# КОМАНДЫ GROUP
def group_exists(self, group_id):
"""Проверяем, есть ли уже группа в базе"""
with self.connection:
result = self.cursor.execute('SELECT * FROM `group` WHERE `group_id` = ?', (group_id,)).fetchall()
return bool(len(result))
def add_group(self, group_id):
"""Добавляем новую группу"""
with self.connection:
return self.cursor.execute("INSERT INTO `group` (`group_id`) VALUES(?)", (group_id,))
def get_group_id(self, group_id):
"""Получаем короткое айди группы"""
with self.connection:
return self.cursor.execute('SELECT `id` FROM `group` WHERE `group_id` = ?', (group_id,)).fetchone()[0]
def get_vk_id(self, group_id):
"""Получаем длинное айди группы"""
with self.connection:
return self.cursor.execute('SELECT `group_id` FROM `group` WHERE `id` = ?', (group_id,)).fetchone()[0]
# ЗАКРЫТИЕ ВЫЗОВА
def close(self):
"""Закрываем соединение с БД"""
self.connection.close()
class Base:
def __init__(self, database):
"""Подключаемся к БД и сохраняем курсор соединения"""
self.connection = sqlite3.connect(database)
self.cursor = self.connection.cursor()
# КОМАНДЫ USER
def infoUser_exists(self, user_id):
"""Проверяем, есть ли данные уже в базе"""
with self.connection:
result = self.cursor.execute('SELECT * FROM `user` WHERE `user_id` = ?', (user_id,)).fetchall()
return bool(len(result))
def add_infoUser(self, user_id):
"""Добавляем информацию о пользователе"""
with self.connection:
return self.cursor.execute("INSERT INTO `user` (`user_id`) VALUES(?)", (user_id, ))
def all_activUser(self):
"""Список активных пользователей"""
with self.connection:
return self.cursor.execute('SELECT `user_id`, `groups` FROM `user` WHERE `status` = 1 AND `count` > 0 '
'AND `token` NOT NULL').fetchall()
def all_subUser(self):
"""Список пользователей подписанных на группу"""
with self.connection:
return self.cursor.execute('SELECT `user_id`, `groups` FROM `user` WHERE `status` = 1 AND `count` > 0').fetchall()
def get_status(self, user_id):
"""Получаем статус рассылки уведомлений"""
with self.connection:
return self.cursor.execute('SELECT `status` FROM `user` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
def update_status(self, user_id):
"""Обновляем статус рассылки уведомлений"""
with self.connection:
status = self.cursor.execute('SELECT `status` FROM `user` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
return self.cursor.execute("UPDATE `user` SET `status` = ? WHERE `user_id` = ?", (not status, user_id))
def get_user_groups(self, user_id):
"""Получаем группы на которые подписан пользователь"""
with self.connection:
return self.cursor.execute('SELECT `groups` FROM `user` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
def update_user_groups(self, user_id, groups):
"""Обновляем группы на которые подписан пользователь"""
with self.connection:
return self.cursor.execute("UPDATE `user` SET `groups` = ? WHERE `user_id` = ?", (groups, user_id))
def get_token(self, user_id):
"""Получаем access token пользователя"""
with self.connection:
return self.cursor.execute('SELECT `token` FROM `user` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
def update_token(self, user_id, token):
"""Обновляем access token пользователя"""
with self.connection:
return self.cursor.execute("UPDATE `user` SET `token` = ? WHERE `user_id` = ?", (token, user_id))
def get_countUser(self, user_id):
"""Получаем количество подписок пользователя"""
with self.connection:
return self.cursor.execute('SELECT `count` FROM `user` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
def update_countUser(self, user_id, num):
"""Обновляем количество подписок пользователя"""
with self.connection:
count = self.cursor.execute('SELECT `count` FROM `user` WHERE `user_id` = ?', (user_id,)).fetchone()[0]
return self.cursor.execute("UPDATE `user` SET `count` = ? WHERE `user_id` = ?", (count + num, user_id))
# КОМАНДЫ GROUP
def infoGroup_exists(self, group_id):
"""Проверяем, есть ли данные уже в базе"""
with self.connection:
result = self.cursor.execute('SELECT * FROM `group` WHERE `group_id` = ?', (group_id,)).fetchall()
return bool(len(result))
def add_infoGroup(self, group_id, tp, last_post):
"""Добавляем информацию о группе"""
with self.connection:
return self.cursor.execute("INSERT INTO `group` (`group_id`, `type`, `last_post`) VALUES(?, ?, ?)",
(group_id, tp, last_post))
def all_notifGroup(self):
"""Список отслеживаемых групп"""
with self.connection:
return self.cursor.execute('SELECT `group_id` FROM `group` WHERE `count` > 0').fetchall()
def get_postGroup(self, group_id):
"""Получаем номер последнего поста"""
with self.connection:
return self.cursor.execute('SELECT `last_post` FROM `group` WHERE `group_id` = ?', (group_id,)).fetchone()[0]
def update_postGroup(self, group_id, last_post):
"""Обновляем номер последнего поста"""
with self.connection:
return self.cursor.execute("UPDATE `group` SET `last_post` = ? WHERE `group_id` = ?", (last_post, group_id))
def update_countGroup(self, group_id, num):
"""Обновляем количество подписок на группу"""
with self.connection:
count = self.cursor.execute('SELECT `count` FROM `group` WHERE `group_id` = ?', (group_id,)).fetchone()[0]
return self.cursor.execute("UPDATE `group` SET `count` = ? WHERE `group_id` = ?", (count + num, group_id))
# ЗАКРЫТИЕ ВЫЗОВА
def close(self):
"""Закрываем соединение с БД"""
self.connection.close()