#ifndef ENTITY_DELETER_WIDGET_H #define ENTITY_DELETER_WIDGET_H #include "repository_manager.h" #include "schema_metadata.h" #include "ui_entity_deleter_widget.h" // Forward declaration class RepositoryResult; class EntityDeleterWidget : public QWidget, private Ui::EntityDeleterWidget { Q_OBJECT private: QSqlRecord selectedRecord_; QSqlField retrievedField_; public: explicit EntityDeleterWidget(QWidget *parent = nullptr); private: void setupComboBoxCurrentTable(); void setupConnections(); void setupEntityFinder(); private slots: void onComboBoxCurrentTableCurrentIndexChanged(int index); void onFieldRetrieved(const QSqlField &field); void onPushButtonDeleteEntityClicked(); void onRecordRetrieved(const QSqlRecord &rowValues); private: void refreshEntityFinder(); void showMessageDialog(const RepositoryResult &result, const QString &successMessage); template Repository *currentRepository(); template RepositoryResult deleteEntityById(); }; template Repository *EntityDeleterWidget::currentRepository() { SchemaMetadata metadata = SchemaMetadata::defaultSchema(); const QString &databaseTableName = comboBoxCurrentTable->currentData().toString(); return RepositoryManager::instance().getRepositoryAs( metadata.repositoryTableName(databaseTableName)); } #endif // ENTITY_DELETER_WIDGET_H