Compare commits

..

No commits in common. "master" and "v1" have entirely different histories.
master ... v1

6 changed files with 18 additions and 61 deletions

View File

@ -1,11 +1,3 @@
### 2.1.0
- В БД сохраняется UTF-8 строки, вместо `\u`
### 2.0.0
- переход с SQLite3 на PostgreSQL
### 1.1.0
- Добавлен выхлом ошибок `try...catch` в логи

View File

@ -30,11 +30,7 @@ cp env.example .env
- `APP_HASH` — Хэш приложения Telegram.
- `ACCOUNT` — Имя аккаунта пользователя Telegram (_например `db_o_qp`_).
- `LOG_PATH` — Путь в файлу логов (_например `/tmp/test.log`_).
- `DB_HOST` — Хост базы данных PostgreSQL
- `DB_PORT` — Порт сервера базы данных
- `DB_NAME` — Имя базы данных
- `DB_USER` — Имя пользователя
- `DB_PASSWORD` — Пароль пользователя
- `DB_PATH` — Путь к файлу базы данных SQLite3 (_например `./db.sqlite`_).
### 🐦‍🔥 Настройка виртуального окружения и загрузка бибилотек
@ -84,5 +80,4 @@ Enter confirmation code: 14628
- **Pyrogram** — Telegram клиент
- **python-dotenv** — Работа с `.env` файлами
- **loguru** — Логирование
- **psycopg2** — Работа с PostgreSQL
- **black** — Форматирование кода

View File

@ -1,6 +1,6 @@
# Информация о программе
__author__ = 'Alexander Popov'
__version__ = (2, 1, 0)
__version__ = (1, 1, 0)
# Импорт модулей стандартной библиотеки
from os import getenv
@ -18,13 +18,7 @@ load_dotenv() # Выполняет чтение .env
client = Client(getenv('ACCOUNT'), api_id=getenv('APP_ID'), api_hash=getenv('APP_HASH'))
"""Клиент Telegram"""
db = DataBase(
getenv('DB_HOST'),
int(getenv('DB_PORT')),
getenv('DB_NAME'),
getenv('DB_USER'),
getenv('DB_PASSWORD'),
)
db = DataBase(getenv('DB_PATH'))
"""База данных"""
logger.add(getenv('LOG_PATH'), compression='zip')

View File

@ -1,35 +1,19 @@
# Импорт модулей стандартной библиотеки
import sqlite3
import json
# Импорт сторонних модулей
import psycopg2
class DataBase(object):
"""Класс для работы с базой данных"""
def __init__(self, host: str, port: int, name: str, user: str, password: str):
def __init__(self, path):
super(DataBase, self).__init__()
self.host = host
"""Хост PostgreSQL базы данных"""
self.port = port
"""Порт сервера базы данных"""
self.name = name
"""Имя базы данных"""
self.user = user
"""Имя пользователя"""
self.password = password
"""Пароль пользователя"""
self.path = path
"""Путь к файлу базы данных SQLite3"""
def connect(self) -> bool:
"""Выполняет подключение к базе данных"""
self.conn = psycopg2.connect(
dbname=self.name,
host=self.host,
user=self.user,
password=self.password,
port=self.port,
)
self.conn = sqlite3.connect(self.path)
return True
def close(self) -> bool:
@ -50,15 +34,7 @@ class DataBase(object):
table = 'donates'
cur = self.conn.cursor()
cur.execute(
'INSERT INTO {table} ("data") VALUES (\'{data}\')'.format(
table=table,
data=json.dumps(
data,
ensure_ascii=False,
),
)
)
cur.execute('INSERT INTO {table} (\'data\') VALUES (\'{data}\')'.format(table=table, data=json.dumps(data)))
self.commit()
cur.close()

View File

@ -2,8 +2,4 @@ APP_ID=""
APP_HASH=""
ACCOUNT=""
LOG_PATH="/tmp/test.log"
DB_HOST=""
DB_PORT=""
DB_NAME=""
DB_USER=""
DB_PASSWORD=""
DB_PATH="./db.sqlite"

View File

@ -1,8 +1,12 @@
BEGIN;
CREATE TABLE "public"."wins" (
"data" JSON NOT NULL,
"timestamp" Timestamp Without Time Zone DEFAULT CURRENT_TIMESTAMP );
;
CREATE TABLE IF NOT EXISTS 'wins'
(
'id' Integer PRIMARY KEY AUTOINCREMENT,
'timestamp' DateTime NOT NULL DEFAULT (datetime(CURRENT_TIMESTAMP, 'localtime')),
'data' Text NOT NULL
);
CREATE INDEX IF NOT EXISTS 'index_timestamp' ON 'wins' ('timestamp');
COMMIT;