wip - remove literal binds
This commit is contained in:
@ -35,6 +35,7 @@ class AliasManager:
|
||||
def __init__(self) -> None:
|
||||
self._aliases_new: Dict[str, str] = dict()
|
||||
self._reversed_aliases: Dict[str, str] = dict()
|
||||
self._prefixed_tables: Dict[str, text] = dict()
|
||||
|
||||
def __contains__(self, item: str) -> bool:
|
||||
return self._aliases_new.__contains__(item)
|
||||
@ -77,15 +78,20 @@ class AliasManager:
|
||||
:rtype: List[text]
|
||||
"""
|
||||
alias = f"{alias}_" if alias else ""
|
||||
aliased_fields = [f"{alias}{x}" for x in fields]
|
||||
# TODO: check if normal fields still needed or only aliased one
|
||||
all_columns = (
|
||||
table.columns
|
||||
if not fields
|
||||
else [col for col in table.columns if col.name in fields]
|
||||
else [
|
||||
col
|
||||
for col in table.columns
|
||||
if col.name in fields or col.name in aliased_fields
|
||||
]
|
||||
)
|
||||
return [column.label(f"{alias}{column.name}") for column in all_columns]
|
||||
|
||||
@staticmethod
|
||||
def prefixed_table_name(alias: str, table: sqlalchemy.Table) -> text:
|
||||
def prefixed_table_name(self, alias: str, table: sqlalchemy.Table) -> text:
|
||||
"""
|
||||
Creates text clause with table name with aliased name.
|
||||
|
||||
@ -96,7 +102,9 @@ class AliasManager:
|
||||
:return: sqlalchemy text clause as "table_name aliased_name"
|
||||
:rtype: sqlalchemy text clause
|
||||
"""
|
||||
return table.alias(f"{alias}_{table.name}")
|
||||
full_alias = f"{alias}_{table.name}"
|
||||
key = f"{full_alias}_{id(table)}"
|
||||
return self._prefixed_tables.setdefault(key, table.alias(full_alias))
|
||||
|
||||
def add_relation_type(
|
||||
self, source_model: Type["Model"], relation_name: str, reverse_name: str = None
|
||||
|
||||
Reference in New Issue
Block a user