mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 03:24:20 +00:00
Remove royalnet.alchemist
, moved to its own repository
https://github.com/Steffo99/alchemist
This commit is contained in:
parent
5e74df9134
commit
5d6db1c4c2
5 changed files with 0 additions and 170 deletions
|
@ -1,18 +0,0 @@
|
|||
"""
|
||||
This module defines multiple objects that simplify some :mod:`sqlalchemy` tasks.
|
||||
"""
|
||||
|
||||
from .func import *
|
||||
from .make import *
|
||||
from .repr import *
|
||||
from .update import *
|
||||
|
||||
__all__ = (
|
||||
"ieq",
|
||||
"ineq",
|
||||
"Makeable",
|
||||
"ColRepr",
|
||||
"Updatable",
|
||||
"DoNotUpdateType",
|
||||
"DoNotUpdate",
|
||||
)
|
|
@ -1,35 +0,0 @@
|
|||
"""
|
||||
This submodule implements quick alias for some common SQL filtering functions.
|
||||
"""
|
||||
|
||||
import sqlalchemy
|
||||
|
||||
|
||||
def ieq(one, two):
|
||||
"""
|
||||
Create a case-insensitive equality filter to be used in :meth:`sqlalchemy.orm.query.Query.filter`.
|
||||
|
||||
Equal to: ::
|
||||
|
||||
lower(one) == lower(two)
|
||||
|
||||
"""
|
||||
return sqlalchemy.func.lower(one) == sqlalchemy.func.lower(two)
|
||||
|
||||
|
||||
def ineq(one, two):
|
||||
"""
|
||||
Create a case-insensitive inequality filter to be used in :meth:`sqlalchemy.orm.query.Query.filter`.
|
||||
|
||||
Equal to: ::
|
||||
|
||||
lower(one) != lower(two)
|
||||
|
||||
"""
|
||||
return sqlalchemy.func.lower(one) != sqlalchemy.func.lower(two)
|
||||
|
||||
|
||||
__all__ = (
|
||||
"ieq",
|
||||
"ineq",
|
||||
)
|
|
@ -1,55 +0,0 @@
|
|||
"""
|
||||
This submodule implements the :class:`.Makeable` mixin.
|
||||
"""
|
||||
|
||||
import sqlalchemy.orm as o
|
||||
|
||||
from royalnet.royaltyping import *
|
||||
|
||||
T = TypeVar('T')
|
||||
|
||||
|
||||
class Makeable:
|
||||
"""
|
||||
A mixin that can be added to a declared class to add the make and unmake methods, that try find an item with
|
||||
specific properties and either create it if it doesn't exist or delete it if it exists.
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def make(cls: Type[T], session: o.session.Session, **kwargs) -> T:
|
||||
"""
|
||||
Find the item with the specified name, or create it if it doesn't exist.
|
||||
|
||||
:param session: The session to be used in the query and creation.
|
||||
:param kwargs: Arguments to use in the :meth:`~sqlalchemy.orm.query.Query.filter_by` clause and in the item
|
||||
constructor.
|
||||
:return: The retrieved or created item.
|
||||
"""
|
||||
# Find the item
|
||||
item = session.query(cls).filter_by(**kwargs).one_or_none()
|
||||
# Create the item
|
||||
if item is None:
|
||||
item = cls(**kwargs)
|
||||
session.add(item)
|
||||
# Return the item
|
||||
return item
|
||||
|
||||
@classmethod
|
||||
def unmake(cls: Type[T], session: o.session.Session, **kwargs) -> None:
|
||||
"""
|
||||
Find the item with the specified name, and delete it if it exists.
|
||||
|
||||
:param session: The session to be used in the query and creation.
|
||||
:param kwargs: Arguments to use in the :meth:`~sqlalchemy.orm.query.Query.filter_by` clause and in the item
|
||||
constructor.
|
||||
"""
|
||||
# Find the item
|
||||
item = session.query(cls).filter_by(**kwargs).one_or_none()
|
||||
# Delete the item
|
||||
if item is not None:
|
||||
session.delete(item)
|
||||
|
||||
|
||||
__all__ = (
|
||||
"Makeable",
|
||||
)
|
|
@ -1,20 +0,0 @@
|
|||
"""
|
||||
This submodule implements :func:`repr`\\ esentation mixins.
|
||||
"""
|
||||
|
||||
|
||||
class ColRepr:
|
||||
"""
|
||||
A mixin that can be added to a declared class to display all columns of the table with their values in the
|
||||
``__repr__``.
|
||||
"""
|
||||
|
||||
def __repr__(self):
|
||||
columns = [c.name for c in self.__class__.__table__.columns]
|
||||
args = [f"{c}={repr(self.__getattribute__(c))}" for c in columns]
|
||||
return f"{self.__class__.__qualname__}({', '.join(args)})"
|
||||
|
||||
|
||||
__all__ = (
|
||||
"ColRepr",
|
||||
)
|
|
@ -1,42 +0,0 @@
|
|||
"""
|
||||
This module implements the :class:`.Updatable` mixin, along with the special class :class:`.DoNotUpdateType` and the singleton :data:`.DoNotUpdate`.
|
||||
"""
|
||||
|
||||
|
||||
class Updatable:
|
||||
"""
|
||||
A mixin that can be added to a declared class to add update methods, allowing attributes to be set from
|
||||
a :class:`dict`.
|
||||
"""
|
||||
|
||||
def update(self, **kwargs):
|
||||
"""Set attributes from the ``kwargs``, ignoring non-existant key/columns."""
|
||||
for key, value in kwargs.items():
|
||||
if value is DoNotUpdate:
|
||||
continue
|
||||
if hasattr(self, key):
|
||||
setattr(self, key, value)
|
||||
|
||||
def set(self, **kwargs):
|
||||
"""Set attributes from the ``kwargs``, without checking for non-existant key/columns."""
|
||||
for key, value in kwargs.items():
|
||||
if value is DoNotUpdate:
|
||||
continue
|
||||
setattr(self, key, value)
|
||||
|
||||
|
||||
class DoNotUpdateType:
|
||||
"""
|
||||
A type, similar to :data:`None`, used to mark fields that should be skipped in update and set operations.
|
||||
"""
|
||||
__slots__ = ()
|
||||
|
||||
|
||||
DoNotUpdate = DoNotUpdateType()
|
||||
"""The constant instance of the DoNotUpdateType."""
|
||||
|
||||
__all__ = (
|
||||
"Updatable",
|
||||
"DoNotUpdateType",
|
||||
"DoNotUpdate",
|
||||
)
|
Loading…
Reference in a new issue