Add device_id to client db

This commit is contained in:
Tulir Asokan 2020-07-11 16:22:27 +03:00
parent 9578883bbb
commit 09108f6a73
6 changed files with 47 additions and 10 deletions

View file

@ -56,6 +56,7 @@ def run_migrations_offline():
target_metadata=target_metadata, target_metadata=target_metadata,
literal_binds=True, literal_binds=True,
dialect_opts={"paramstyle": "named"}, dialect_opts={"paramstyle": "named"},
render_as_batch=True,
) )
with context.begin_transaction(): with context.begin_transaction():
@ -77,7 +78,8 @@ def run_migrations_online():
with connectable.connect() as connection: with connectable.connect() as connection:
context.configure( context.configure(
connection=connection, target_metadata=target_metadata connection=connection, target_metadata=target_metadata,
render_as_batch=True,
) )
with context.begin_transaction(): with context.begin_transaction():

View file

@ -0,0 +1,32 @@
"""Add device_id to clients
Revision ID: 4b93300852aa
Revises: fccd1f95544d
Create Date: 2020-07-11 15:49:38.831459
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '4b93300852aa'
down_revision = 'fccd1f95544d'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('client', schema=None) as batch_op:
batch_op.add_column(sa.Column('device_id', sa.String(length=255), nullable=True))
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('client', schema=None) as batch_op:
batch_op.drop_column('device_id')
# ### end Alembic commands ###

View file

@ -60,7 +60,7 @@ class Client:
self.remote_avatar_url = None self.remote_avatar_url = None
self.client = MaubotMatrixClient(mxid=self.id, base_url=self.homeserver, self.client = MaubotMatrixClient(mxid=self.id, base_url=self.homeserver,
token=self.access_token, client_session=self.http_client, token=self.access_token, client_session=self.http_client,
log=self.log, loop=self.loop, log=self.log, loop=self.loop, device_id=self.device_id,
store=ClientStoreProxy(self.db_instance)) store=ClientStoreProxy(self.db_instance))
self.client.ignore_initial_sync = True self.client.ignore_initial_sync = True
self.client.ignore_first_sync = True self.client.ignore_first_sync = True
@ -273,6 +273,10 @@ class Client:
def access_token(self) -> str: def access_token(self) -> str:
return self.db_instance.access_token return self.db_instance.access_token
@property
def device_id(self) -> str:
return self.db_instance.device_id
@property @property
def enabled(self) -> bool: def enabled(self) -> bool:
return self.db_instance.enabled return self.db_instance.enabled

View file

@ -21,7 +21,7 @@ from sqlalchemy import Column, String, Boolean, ForeignKey, Text
from sqlalchemy.engine.base import Engine from sqlalchemy.engine.base import Engine
import sqlalchemy as sql import sqlalchemy as sql
from mautrix.types import UserID, FilterID, SyncToken, ContentURI from mautrix.types import UserID, FilterID, DeviceID, SyncToken, ContentURI
from mautrix.util.db import Base from mautrix.util.db import Base
from .config import Config from .config import Config
@ -53,6 +53,7 @@ class DBClient(Base):
id: UserID = Column(String(255), primary_key=True) id: UserID = Column(String(255), primary_key=True)
homeserver: str = Column(String(255), nullable=False) homeserver: str = Column(String(255), nullable=False)
access_token: str = Column(Text, nullable=False) access_token: str = Column(Text, nullable=False)
device_id: DeviceID = Column(String(255), nullable=True)
enabled: bool = Column(Boolean, nullable=False, default=False) enabled: bool = Column(Boolean, nullable=False, default=False)
next_batch: SyncToken = Column(String(255), nullable=False, default="") next_batch: SyncToken = Column(String(255), nullable=False, default="")

View file

@ -21,10 +21,8 @@ class ClientStoreProxy(ClientStore):
def __init__(self, db_instance) -> None: def __init__(self, db_instance) -> None:
self.db_instance = db_instance self.db_instance = db_instance
@property async def put_next_batch(self, next_batch: SyncToken) -> None:
def next_batch(self) -> SyncToken: self.db_instance.edit(next_batch=next_batch)
return self.db_instance.next_batch
@next_batch.setter async def get_next_batch(self) -> SyncToken:
def next_batch(self, value: SyncToken) -> None: return self.db_instance.next_batch
self.db_instance.edit(next_batch=value)

View file

@ -1,4 +1,4 @@
mautrix==0.5.7 mautrix==0.6.0.beta7
aiohttp>=3,<4 aiohttp>=3,<4
SQLAlchemy>=1,<2 SQLAlchemy>=1,<2
alembic>=1,<2 alembic>=1,<2