mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +00:00
METACLASSIIIIIIIIIIIIII
This commit is contained in:
parent
38baa29fc3
commit
090896b9ee
5 changed files with 47 additions and 3 deletions
|
@ -1,6 +1,17 @@
|
|||
import typing
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.engine import Engine
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from .tables import Royal
|
||||
from ..utils import classdictjanitor
|
||||
|
||||
|
||||
class Alchemy:
|
||||
def __init__(self, database_uri: str = "sqlite://"):
|
||||
self.engine = create_engine(database_uri)
|
||||
self.Base = declarative_base(bind=self.engine)
|
||||
self.Session = sessionmaker(bind=self.engine)
|
||||
self._create_tables()
|
||||
|
||||
def _create_tables(self):
|
||||
self.Royal = type("Royal", (self.Base,), classdictjanitor(Royal))
|
||||
self.Base.metadata.create_all()
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
from .royals import Role, Royal
|
||||
|
||||
__all__ = ["Role", "Royal"]
|
20
royalnet/database/tables/royals.py
Normal file
20
royalnet/database/tables/royals.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
from enum import Enum
|
||||
from sqlalchemy import Column, \
|
||||
Integer, \
|
||||
String, \
|
||||
LargeBinary
|
||||
|
||||
|
||||
class Role(Enum):
|
||||
Guest = "Guest"
|
||||
Member = "Member"
|
||||
Admin = "Admin"
|
||||
|
||||
|
||||
class Royal:
|
||||
__tablename__ = "royals"
|
||||
|
||||
uid = Column(Integer, unique=True, primary_key=True)
|
||||
username = Column(String, unique=True, nullable=False)
|
||||
password = Column(LargeBinary)
|
||||
role = Column(String, nullable=False)
|
|
@ -2,5 +2,7 @@ from .asyncify import asyncify
|
|||
from .call import Call
|
||||
from .command import Command, CommandArgs, InvalidInputError, UnsupportedError
|
||||
from .safeformat import safeformat
|
||||
from .classdictjanitor import classdictjanitor
|
||||
|
||||
__all__ = ["asyncify", "Call", "Command", "safeformat", "InvalidInputError", "UnsupportedError", "CommandArgs"]
|
||||
__all__ = ["asyncify", "Call", "Command", "safeformat", "InvalidInputError", "UnsupportedError", "CommandArgs",
|
||||
"classdictjanitor"]
|
||||
|
|
8
royalnet/utils/classdictjanitor.py
Normal file
8
royalnet/utils/classdictjanitor.py
Normal file
|
@ -0,0 +1,8 @@
|
|||
def classdictjanitor(class_) -> dict:
|
||||
"""Return the cleaned class attributes in a dict."""
|
||||
d = dict(class_.__dict__)
|
||||
del d["__module__"]
|
||||
del d["__dict__"]
|
||||
del d["__weakref__"]
|
||||
del d["__doc__"]
|
||||
return d
|
Loading…
Reference in a new issue