- 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>
Replaces the raw-SQL-text preview/output with real data tables, and
fixes duplicate-output when a student's own SQL is itself a SELECT.
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.
Extends the existing language-agnostic /format endpoint with a sql
branch so the "整理" button works for the new SQL language too.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Lets students select a preset teaching table, write SQL against it,
and see the resulting table state via the existing Judge0 pipeline.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>