Merge pull request #84 from tulir/sqlalchemy-session

Move session storage to the main database
This commit is contained in:
Tulir Asokan
2018-03-03 13:34:05 +02:00
committed by GitHub
4 changed files with 125 additions and 6 deletions
+6 -2
View File
@@ -22,6 +22,7 @@ import asyncio
import sqlalchemy as sql
from sqlalchemy import orm
from telethon.sessions import AlchemySessionContainer
from mautrix_appservice import AppService
from .base import Base
@@ -76,14 +77,17 @@ db_factory = orm.sessionmaker(bind=db_engine)
db_session = orm.scoping.scoped_session(db_factory)
Base.metadata.bind = db_engine
telethon_session_container = AlchemySessionContainer(engine=db_engine, session=db_session,
table_base=Base, table_prefix="telethon_",
manage_tables=False)
loop = asyncio.get_event_loop()
appserv = AppService(config["homeserver.address"], config["homeserver.domain"],
config["appservice.as_token"], config["appservice.hs_token"],
config["appservice.bot_username"], log="mau.as", loop=loop)
context = Context(appserv, db_session, config, loop, None, None)
context = Context(appserv, db_session, config, loop, None, None, telethon_session_container)
if config["appservice.public.enabled"]:
public = PublicBridgeWebsite(loop)
+6 -3
View File
@@ -30,6 +30,7 @@ MAX_DELETIONS = 10
class AbstractUser:
session_container = None
loop = None
log = None
db = None
@@ -46,9 +47,10 @@ class AbstractUser:
self.log.debug(f"Initializing client for {self.name}")
device = f"{platform.system()} {platform.release()}"
sysversion = MautrixTelegramClient.__version__
self.client = MautrixTelegramClient(self.name,
config["telegram.api_id"],
config["telegram.api_hash"],
self.session = self.session_container.new_session(self.name)
self.client = MautrixTelegramClient(session=self.session,
api_id=config["telegram.api_id"],
api_hash=config["telegram.api_hash"],
loop=self.loop,
app_version=__version__,
system_version=sysversion,
@@ -290,4 +292,5 @@ class AbstractUser:
def init(context):
global config, MAX_DELETIONS
AbstractUser.az, AbstractUser.db, config, AbstractUser.loop, _ = context
AbstractUser.session_container = context.telethon_session_container
MAX_DELETIONS = config.get("bridge.max_telegram_delete", 10)
+2 -1
View File
@@ -17,13 +17,14 @@
class Context:
def __init__(self, az, db, config, loop, bot, mx):
def __init__(self, az, db, config, loop, bot, mx, telethon_session_container):
self.az = az
self.db = db
self.config = config
self.loop = loop
self.bot = bot
self.mx = mx
self.telethon_session_container = telethon_session_container
def __iter__(self):
yield self.az