FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

DG-01 — Data Grid DML SQL Generator (UPDATE, INSERT, DELETE builder with PK resolution) · Issue #564 · QueryaHub/Querya-Desktop · GitHub

DG-01 — Data Grid DML SQL Generator (UPDATE, INSERT, DELETE builder with PK resolution) #564

Description

Labels: data-grid, backend, sql-editor
Epic: A
Depends on: none

Goal

Создать сервис DataGridDmlGenerator, который на основе изменений в DataGridStagingBuffer и метаданных таблицы (название таблицы, первичные ключи / уникальные колонки) генерирует безопасные параметризованные или экранированные SQL-выражения UPDATE, INSERT и DELETE.

Context

DataGridStagingBuffer уже хранит _modifiedCells, _insertedRows и _deletedRowIndices. Однако в проекте отсутствует модуль, преобразующий эти дельты в конкретные SQL-запросы под диалекты PostgreSQL, MySQL и SQLite.

Implementation

  1. Создать lib/features/main_screen/data_grid_dml_generator.dart:
    • Модель DmlStatement (тип операции insert/update/delete, SQL-текст, исходная строка).
    • Метод generateDml({required String tableName, required List<String> columns, required List<String> primaryKeys, required DataGridStagingBuffer buffer, required SqlDialect dialect}).
    • Для UPDATE: генерировать UPDATE <table> SET col1 = 'val1', col2 = 'val2' WHERE pk1 = 'old_pk1' AND ....
    • Для INSERT: генерировать INSERT INTO <table> (col1, col2) VALUES ('val1', 'val2').
    • Для DELETE: генерировать DELETE FROM <table> WHERE pk1 = 'pk1'.
    • Корректное экранирование спецсимволов и кавычек под целевой диалект (Postgres $1 / кавычки, MySQL backticks, SQLite).
  2. Написать модульные тесты в test/features/main_screen/data_grid_dml_generator_test.dart.

Acceptance Criteria

  • Генерируются точные SQL-запросы для единичных и множественных правок ячеек.
  • Если в строке изменены 3 ячейки, генерируется один UPDATE со всеми 3 колонками в SET.
  • Если primary key отсутствует, используется сопоставление по всем исходным колонкам строки (WHERE col1 = 'old1' AND col2 = 'old2' ...).
  • Тесты покрывают диалекты PostgreSQL, MySQL и SQLite.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendBackend database driver execution and queriesdata-gridInteractive data grid, cell editor, filtering, groupingseditorCode/SQL editor

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions


      Back | FazBrowse Home | New Git URL