Skip to content
33 changes: 15 additions & 18 deletions src/sqlacodegen/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@
except ImportError:
pgvector = None

from sqlacodegen.generate_factory_fixtures import export_factory_fixtures
from sqlacodegen.risclog_generators import (
parse_aggregate_row,
parse_extension_row,
parse_function_row,
parse_policy_row,
parse_publication_row,
parse_trigger_row,
)
from sqlacodegen.seed_export import export_pgdata_py, get_table_dependency_order
from sqlacodegen.seed_export import export_pgdata_py

if sys.version_info < (3, 10):
from importlib_metadata import entry_points, version
Expand Down Expand Up @@ -245,6 +245,14 @@ class ExportDict(TypedDict, total=False):
"parse_row_func": parse_extension_row,
"file": "pg_extensions.py",
},
{
"title": "Publications",
"entities_varname": "all_publications",
"template": "ALEMBIC_PUBLICATION_TEMPLATE",
"statement": "ALEMBIC_PUBLICATION_STATEMENT",
"parse_row_func": parse_publication_row,
"file": "pg_publications.py",
},
]

# ----------- Export-Loop ------------
Expand Down Expand Up @@ -335,11 +343,16 @@ class ExportDict(TypedDict, total=False):

# ----------- PGData SEED Export separat ------------
if args.outfile_dir:
all_view_names = set()
for schema in schemas:
all_view_names |= set(inspector.get_view_names(schema=schema))

dest_pg_path = Path(str(parent), "pg_seeds.py")
export_pgdata_py(
engine=engine,
metadata=metadata_tables,
out_path=dest_pg_path,
view_table_names=all_view_names,
)
print(f"PGData Seed geschrieben nach: {dest_pg_path.as_posix()}")

Expand All @@ -366,19 +379,3 @@ def make_dynamic_models(metadata: MetaData) -> dict[str, type[Any]]:
model = type(class_name, (Base,), {"__table__": table})
models_by_table[table.name] = model
return models_by_table

Base = getattr(generator, "base", None)
if Base is not None:
models = get_all_models(Base)
models_by_table = {m.__tablename__: m for m in models}
else:
models_by_table = make_dynamic_models(metadata_tables)

dependency_order = get_table_dependency_order(metadata_tables)

export_factory_fixtures(
models_by_table=models_by_table,
factories_path=Path(parent) / "factories.py",
dependency_order=dependency_order,
)
print(f"Factories & Fixtures geschrieben nach: {parent.as_posix()}")
54 changes: 0 additions & 54 deletions src/sqlacodegen/generate_factory_fixtures.py

This file was deleted.

15 changes: 15 additions & 0 deletions src/sqlacodegen/generators.py
Original file line number Diff line number Diff line change
Expand Up @@ -1225,6 +1225,21 @@ def render_column_attribute(self, column_attr: ColumnAttribute) -> str:
column = column_attr.column
rendered_column = self.render_column(column, column_attr.name != column.name)

is_uuid_pk = (
column.primary_key
and getattr(column.type, "python_type", None)
in (str, bytes) # meistens str
and "Uuid" in str(column.type)
and not getattr(column, "default", None)
and not getattr(column, "server_default", None)
)
if is_uuid_pk and "default=uuid4" not in rendered_column:
# default=uuid4 in den Column-Aufruf einfügen (vor letztem ")")
if rendered_column.endswith(")"):
# Einfachstes Pattern: vor ")" einfügen
rendered_column = rendered_column[:-1] + ", default=uuid4)"
self.add_literal_import("uuid", "uuid4")

def get_type_qualifiers() -> tuple[str, TypeEngine[Any], str]:
column_type = column.type
pre: list[str] = []
Expand Down
Loading
Loading