mirror of
https://github.com/openmax-server/server.git
synced 2026-05-22 19:41:41 +03:00
Вынес sqlite в отдельный модуль
This commit is contained in:
60
src/common/sqlite.py
Normal file
60
src/common/sqlite.py
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
class SQLiteCursorCompat:
|
||||||
|
def __init__(self, connection):
|
||||||
|
self.connection = connection
|
||||||
|
self.cursor = None
|
||||||
|
|
||||||
|
async def __aenter__(self):
|
||||||
|
self.cursor = await self.connection.cursor()
|
||||||
|
return self
|
||||||
|
|
||||||
|
async def __aexit__(self, exc_type, exc, tb):
|
||||||
|
if self.cursor is not None:
|
||||||
|
await self.cursor.close()
|
||||||
|
self.cursor = None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def lastrowid(self):
|
||||||
|
return None if self.cursor is None else self.cursor.lastrowid
|
||||||
|
|
||||||
|
def _normalize_query(self, query):
|
||||||
|
return query.replace("%s", "?").replace(
|
||||||
|
"UNIX_TIMESTAMP()", "CAST(strftime('%s','now') AS INTEGER)"
|
||||||
|
)
|
||||||
|
|
||||||
|
async def execute(self, query, params=()):
|
||||||
|
normalized_query = self._normalize_query(query)
|
||||||
|
if params is None:
|
||||||
|
params = ()
|
||||||
|
elif not isinstance(params, (tuple, list, dict)):
|
||||||
|
params = (params,)
|
||||||
|
await self.cursor.execute(normalized_query, params)
|
||||||
|
|
||||||
|
async def fetchone(self):
|
||||||
|
row = await self.cursor.fetchone()
|
||||||
|
if row is None:
|
||||||
|
return None
|
||||||
|
return dict(row)
|
||||||
|
|
||||||
|
async def fetchall(self):
|
||||||
|
rows = await self.cursor.fetchall()
|
||||||
|
return [dict(row) for row in rows]
|
||||||
|
|
||||||
|
class SQLiteConnectionCompat:
|
||||||
|
def __init__(self, connection):
|
||||||
|
self.connection = connection
|
||||||
|
|
||||||
|
async def __aenter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
async def __aexit__(self, exc_type, exc, tb):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def cursor(self):
|
||||||
|
return SQLiteCursorCompat(self.connection)
|
||||||
|
|
||||||
|
class SQLitePoolCompat:
|
||||||
|
def __init__(self, connection):
|
||||||
|
self.connection = connection
|
||||||
|
|
||||||
|
def acquire(self):
|
||||||
|
return SQLiteConnectionCompat(self.connection)
|
||||||
67
src/main.py
67
src/main.py
@@ -8,6 +8,7 @@ import traceback
|
|||||||
|
|
||||||
from common.config import ServerConfig
|
from common.config import ServerConfig
|
||||||
from common.push import PushService
|
from common.push import PushService
|
||||||
|
from common.sqlite import SQLitePoolCompat
|
||||||
from oneme.controller import OnemeController
|
from oneme.controller import OnemeController
|
||||||
from tamtam.controller import TTController
|
from tamtam.controller import TTController
|
||||||
from telegrambot.controller import TelegramBotController
|
from telegrambot.controller import TelegramBotController
|
||||||
@@ -15,71 +16,6 @@ from telegrambot.controller import TelegramBotController
|
|||||||
# Конфиг сервера
|
# Конфиг сервера
|
||||||
server_config = ServerConfig()
|
server_config = ServerConfig()
|
||||||
|
|
||||||
|
|
||||||
class SQLiteCursorCompat:
|
|
||||||
def __init__(self, connection):
|
|
||||||
self.connection = connection
|
|
||||||
self.cursor = None
|
|
||||||
|
|
||||||
async def __aenter__(self):
|
|
||||||
self.cursor = await self.connection.cursor()
|
|
||||||
return self
|
|
||||||
|
|
||||||
async def __aexit__(self, exc_type, exc, tb):
|
|
||||||
if self.cursor is not None:
|
|
||||||
await self.cursor.close()
|
|
||||||
self.cursor = None
|
|
||||||
|
|
||||||
@property
|
|
||||||
def lastrowid(self):
|
|
||||||
return None if self.cursor is None else self.cursor.lastrowid
|
|
||||||
|
|
||||||
def _normalize_query(self, query):
|
|
||||||
return query.replace("%s", "?").replace(
|
|
||||||
"UNIX_TIMESTAMP()", "CAST(strftime('%s','now') AS INTEGER)"
|
|
||||||
)
|
|
||||||
|
|
||||||
async def execute(self, query, params=()):
|
|
||||||
normalized_query = self._normalize_query(query)
|
|
||||||
if params is None:
|
|
||||||
params = ()
|
|
||||||
elif not isinstance(params, (tuple, list, dict)):
|
|
||||||
params = (params,)
|
|
||||||
await self.cursor.execute(normalized_query, params)
|
|
||||||
|
|
||||||
async def fetchone(self):
|
|
||||||
row = await self.cursor.fetchone()
|
|
||||||
if row is None:
|
|
||||||
return None
|
|
||||||
return dict(row)
|
|
||||||
|
|
||||||
async def fetchall(self):
|
|
||||||
rows = await self.cursor.fetchall()
|
|
||||||
return [dict(row) for row in rows]
|
|
||||||
|
|
||||||
|
|
||||||
class SQLiteConnectionCompat:
|
|
||||||
def __init__(self, connection):
|
|
||||||
self.connection = connection
|
|
||||||
|
|
||||||
async def __aenter__(self):
|
|
||||||
return self
|
|
||||||
|
|
||||||
async def __aexit__(self, exc_type, exc, tb):
|
|
||||||
return False
|
|
||||||
|
|
||||||
def cursor(self):
|
|
||||||
return SQLiteCursorCompat(self.connection)
|
|
||||||
|
|
||||||
|
|
||||||
class SQLitePoolCompat:
|
|
||||||
def __init__(self, connection):
|
|
||||||
self.connection = connection
|
|
||||||
|
|
||||||
def acquire(self):
|
|
||||||
return SQLiteConnectionCompat(self.connection)
|
|
||||||
|
|
||||||
|
|
||||||
async def init_db():
|
async def init_db():
|
||||||
"""Инициализация базы данных"""
|
"""Инициализация базы данных"""
|
||||||
|
|
||||||
@@ -117,7 +53,6 @@ def init_ssl():
|
|||||||
# Возвращаем
|
# Возвращаем
|
||||||
return ssl_context
|
return ssl_context
|
||||||
|
|
||||||
|
|
||||||
def set_logging():
|
def set_logging():
|
||||||
"""Настройка уровня логирования"""
|
"""Настройка уровня логирования"""
|
||||||
# Настройка уровня логирования
|
# Настройка уровня логирования
|
||||||
|
|||||||
Reference in New Issue
Block a user