Rewrites Content.vue to give the SQL language its own top/bottom split
(code editor over data tables) instead of sharing the horizontal
left/right layout used by other languages. SqlSection.vue now renders
the preset data and the post-run result as two side-by-side
n-data-tables, falling back to the existing error UI when a run fails.
Also registers NDataTable globally in main.ts (naive-ui components must
be explicitly registered via create()); without it n-data-table was an
inert unresolved custom element and no rows rendered.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Replace literal setupSql strings with structured columns/rows model
- Add SqlColumn interface and updated SqlTablePreset with columns/rows arrays
- Implement toSqlLiteral() for value escaping and buildSetupSql() for SQL generation
- Update sqlTable.ts to call buildSetupSql() instead of accessing setupSql field
- Maintains data parity with existing tables (students, employees, products)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- Normalize student SQL to end with exactly one semicolon before
appending the trailing SELECT, so a missing trailing ; no longer
produces a confusing parse error (sqlTable.ts)
- Remove unused description field from SqlTablePreset and all presets
(dead data, nothing in the UI reads it)
- Clear output when the candidate table selection changes, so stale
results from the previous table don't linger (SqlSection.vue)
- Remove stray console.log(props.language) debug statement
(CodeEditor.vue)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Previously the candidate-table dropdown lived inside SqlSection's
content pane; moved it into the header alongside SelectLanguage so
table selection is visible regardless of scroll position.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Selecting SQL now shows a table picker, read-only setup-SQL preview,
and results panel instead of the Input/Output split, mirroring how
Turtle already replaces that pane with its own canvas.