1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +00:00

Promote aliases to royalnet

This commit is contained in:
Steffo 2020-02-03 23:08:00 +01:00
parent 40d4e96dd2
commit cdfd6c3e49
2 changed files with 37 additions and 0 deletions

View file

@ -3,6 +3,7 @@ from .users import User
from .telegram import Telegram
from .discord import Discord
from .matrix import Matrix
from .aliases import Alias
# Enter the tables of your Pack here!
available_tables = {
@ -10,6 +11,7 @@ available_tables = {
Telegram,
Discord,
Matrix,
Alias
}
# Don't change this, it should automatically generate __all__

View file

@ -0,0 +1,35 @@
from sqlalchemy import Column, \
Integer, \
String, \
ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declared_attr
class Alias:
__tablename__ = "aliases"
@declared_attr
def royal_id(self):
return Column(Integer, ForeignKey("users.uid"))
@declared_attr
def alias(self):
return Column(String, primary_key=True)
@declared_attr
def royal(self):
return relationship("User", backref="aliases")
@classmethod
def find_by_alias(cls, alchemy, session, alias: str):
result = session.query(alchemy.get(cls)).filter_by(alias=alias.lower()).one_or_none()
if result is not None:
result = result.royal
return result
def __repr__(self):
return f"<Alias {str(self)}>"
def __str__(self):
return f"{self.alias}->{self.royal_id}"