v0.2-alpha
Neu:
• bulk_create(table, list_of_dicts)
Ermöglicht das Einfügen vieler Datensätze in einem einzigen INSERT, statt jede Zeile einzeln zu schreiben.
• update_by_conditions(table, updates: dict, **conditions)
Führt ein UPDATE auf alle Zeilen aus, die den angegebenen Bedingungen genügen (ähnlich zu find_ids, aber mit SET).
• delete_by_conditions(table, **conditions)
Löscht alle Zeilen anhand von WHERE-Kriterien, ohne sie vorher als Objekte zu instanziieren.
• get_all(table, **conditions) → List[DynamicModel]
Liefert direkt eine Liste von Model-Instanzen mit optionalen Filterkriterien, z. B. get_all("users", active="true").
• paginate(table, page: int, per_page: int, **conditions)
Kombiniert WHERE, LIMIT und OFFSET und gibt die IDs oder Instanzen zurück.
• count(table, *conditions) → int
Zählt Zeilen (SELECT COUNT()…), optional mit WHERE-Bedingungen.
• exists(table, **conditions) → bool
Prüft, ob mindestens eine Zeile die Bedingungen erfüllt.
• order_by(table, *columns, asc=True, **conditions)
Erweitert get_all oder find_ids um eine ORDER-BY-Klausel.
• transaction(ctx_callable)
Erlaubt es, mehrere Änderungen in einer einzigen Transaktion zusammenzufassen (mit Rollback bei Fehler).
• raw_query(sql_string, params)
Macht eigene, frei formatierte Abfragen möglich, wenn das ORM mal nicht ausreicht.
• add_index(table, column: str, unique=False)
Legt einen Index oder Unique-Constraint an, um Abfragen zu beschleunigen.
• drop_column(table, column: str)
Entfernt eine Spalte wieder (gegenüber dem bereits vorhandenen ADD COLUMN).
• rename_column(table, old: str, new: str)
Erlaubt das Umbenennen von Spalten.
• inspect_schema(table) → Dict[str, dict]
Gibt zu jeder Spalte Metadaten zurück (Typ, Default, nullable etc.), um Validierungen vor der Laufzeit zu ermöglichen.
• relationship(one: str, many: str, fk: str)
Definiert Verknüpfungen zwischen Tabellen („Has-Many“ / „Belongs-To“) und sorgt für automatisches Join-Fetching.
• before_insert / after_insert hooks
Callback-Mechanismus, um z. B. automatisch Timestamps zu setzen oder Eingaben zu validieren.
• soft_delete(table, **conditions)
Setzt statt Löschen ein „deleted_at“-Feld oder Boolean-Flag, um Datenbank-Historie zu bewahren.
• schema_migration(tooling)
Ermöglicht versionierte Migrationen (Up / Down), um Spalten hinzuzufügen/zu ändern/anpassen.
• connection_pooling(minconn, maxconn)
Verwaltet einen Pool von Verbindungen anstelle einer Einzelverbindung, um Performance in Mehrbenutzer-Szenarien zu optimieren.
• support für andere Dialekte (SQLite, MySQL)
Abstrahiert SQL-Dialekt-Unterschiede, damit das Tool nicht nur auf Postgres limitiert ist.