remembering logins + tokens
This commit is contained in:
parent
83404812d0
commit
6871aa2449
5 changed files with 242 additions and 19 deletions
|
|
@ -1,8 +1,8 @@
|
|||
from typing import Optional
|
||||
from typing import List, Optional
|
||||
|
||||
from sqlalchemy import CHAR, Index, String, TIMESTAMP, text
|
||||
from sqlalchemy import CHAR, ForeignKeyConstraint, Index, String, TIMESTAMP, text
|
||||
from sqlalchemy.dialects.mysql import INTEGER, TINYINT
|
||||
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
|
||||
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
|
||||
import datetime
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
|
|
@ -39,3 +39,38 @@ class Users(Base):
|
|||
created_at: Mapped[Optional[datetime.datetime]] = mapped_column(TIMESTAMP, server_default=text('current_timestamp()'))
|
||||
temporary: Mapped[Optional[int]] = mapped_column(TINYINT(1), server_default=text('1'))
|
||||
invite_code: Mapped[Optional[str]] = mapped_column(String(32))
|
||||
invited_by: Mapped[Optional[str]] = mapped_column(String(64))
|
||||
|
||||
sessions: Mapped[List['Sessions']] = relationship('Sessions', back_populates='users')
|
||||
tokens: Mapped[List['Tokens']] = relationship('Tokens', back_populates='users')
|
||||
|
||||
|
||||
class Sessions(Base):
|
||||
__tablename__ = 'sessions'
|
||||
__table_args__ = (
|
||||
ForeignKeyConstraint(['username'], ['users.username'], ondelete='CASCADE', name='sessions_ibfk_1'),
|
||||
Index('ix_sessions_username', 'username')
|
||||
)
|
||||
|
||||
id: Mapped[int] = mapped_column(INTEGER(11), primary_key=True)
|
||||
username: Mapped[Optional[str]] = mapped_column(String(64))
|
||||
hash: Mapped[Optional[str]] = mapped_column(String(128))
|
||||
expiry: Mapped[Optional[datetime.datetime]] = mapped_column(TIMESTAMP)
|
||||
|
||||
users: Mapped['Users'] = relationship('Users', back_populates='sessions')
|
||||
|
||||
|
||||
class Tokens(Base):
|
||||
__tablename__ = 'tokens'
|
||||
__table_args__ = (
|
||||
ForeignKeyConstraint(['username'], ['users.username'], ondelete='CASCADE', name='token_username_fk'),
|
||||
Index('ix_tokens_username', 'username')
|
||||
)
|
||||
|
||||
id: Mapped[int] = mapped_column(INTEGER(11), primary_key=True)
|
||||
username: Mapped[Optional[str]] = mapped_column(String(64))
|
||||
hash: Mapped[Optional[str]] = mapped_column(String(128))
|
||||
name: Mapped[Optional[str]] = mapped_column(String(128))
|
||||
created_at: Mapped[Optional[datetime.datetime]] = mapped_column(TIMESTAMP, server_default=text('current_timestamp()'))
|
||||
|
||||
users: Mapped['Users'] = relationship('Users', back_populates='tokens')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue