Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

# dependencies
/node_modules

# generated
/public/licenses.json
/.pnp
.pnp.js

Expand Down Expand Up @@ -35,6 +38,7 @@ scripts/*
!scripts/generate-language.ts
!scripts/extract-oracle.ts
!scripts/generate-erd.ts
!scripts/generate-licenses.ts
!scripts/hooks/

data/*
Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Changelog

## 2026-06-14 - Relational algebra mode
You can now answer questions with relational algebra instead of SQL. Use the SQL/RA toggle to switch. Expressions are converted to SQL and run the same way, and the generated SQL is shown for reference.

## 2026-03-19 - Changelog added
A changelog has been added to the app to keep you updated on new features and bug fixes.

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# SQL Validator
SQL Validator is a fully client-side web application powered by sql.js. Designed for the database course at Stockholm University, it provides an interface for students to write, format, and run SQL queries directly in their browser without the need for a database server. Results can be compared to expected results based on a question bank, and views can be created and managed using the browser's local storage.
SQL Validator is a fully client-side web application powered by sql.js. It provides an interface for writing, formatting, and running SQL queries directly in the browser without the need for a database server. Results can be compared to expected results based on a question bank, and views can be created and managed using the browser's local storage.

## Features
- **Fully Client-Side Execution**: All SQL validation and execution is performed in the browser using sql.js SQLite.
Expand Down
34 changes: 34 additions & 0 deletions languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,40 @@ const de: LanguageDefinition = {
"Warnung: Diese Speicherdatei wurde in einer anderen Sprache erstellt ({{fileLang}}). Der Import kann zu Problemen führen..",
viewLabel: "View",
changelog: "Änderungsprotokoll",
modeSQL: "SQL",
modeRA: "Relationale Algebra",
generatedSQL: "Generiertes SQL",
raParseError: "Fehler in relationaler Algebra: {{message}}",
raPlaceholder: "-- Schreibe einen Ausdruck der relationalen Algebra\n-- Klicke auf 'RA-Referenz' für die Syntax",
raReference: "Referenz relationale Algebra",
raUnaryOps: "Unäre Operatoren",
raBinaryOps: "Binäre Operatoren",
raColOp: "Operator",
raColSyntax: "Syntax",
raColDesc: "Beschreibung",
raDescSelection: "Selektion — Zeilen filtern",
raDescProjection: "Projektion — Spalten auswählen",
raDescRename: "Spalten umbenennen",
raDescGroup: "Gruppierung mit Aggregaten",
raDescSort: "Sortierung",
raDescDistinct: "Duplikate entfernen",
raDescCross: "Kreuzprodukt",
raDescNatJoin: "Natürlicher Join",
raDescThetaJoin: "Theta-Join (bedingt)",
raDescUnion: "Vereinigung",
raDescIntersect: "Schnittmenge",
raDescMinus: "Differenz",
raDescDivide: "Division",
raNotation: "Notationsstile",
raNoteBrackets: "— eckige Klammern",
raNoteCurly: "— geschweifte Klammern",
raNoteLaTeX: "— LaTeX-Stil",
raNoteImplicit: "— ohne Klammern",
raNoteChain: "— Verkettung ohne ()",
raAssignment: "Zuweisung",
raNoteAssignment: "Die letzte Zuweisung wird automatisch zurückgegeben",
raConditions: "Bedingungen",
raNoteComparison: "Vergleichsoperatoren: = <> < > <= >=",
},
};

Expand Down
34 changes: 34 additions & 0 deletions languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,40 @@ const en: LanguageDefinition = {
"Warning: This save file was created with a different language ({{fileLang}}). Importing may cause issues.",
viewLabel: "View",
changelog: "Changelog",
modeSQL: "SQL",
modeRA: "Relational Algebra",
generatedSQL: "Generated SQL",
raParseError: "Relational algebra error: {{message}}",
raPlaceholder: "-- Write a relational algebra expression\n-- Click 'RA Reference' for syntax",
raReference: "Relational Algebra Reference",
raUnaryOps: "Unary Operators",
raBinaryOps: "Binary Operators",
raColOp: "Operator",
raColSyntax: "Syntax",
raColDesc: "Description",
raDescSelection: "Selection — filter rows",
raDescProjection: "Projection — pick columns",
raDescRename: "Rename columns",
raDescGroup: "Grouping with aggregates",
raDescSort: "Sort",
raDescDistinct: "Remove duplicates",
raDescCross: "Cross product",
raDescNatJoin: "Natural join",
raDescThetaJoin: "Theta join (conditional)",
raDescUnion: "Union",
raDescIntersect: "Intersection",
raDescMinus: "Difference",
raDescDivide: "Division",
raNotation: "Notation Styles",
raNoteBrackets: "— square brackets",
raNoteCurly: "— curly braces",
raNoteLaTeX: "— LaTeX style",
raNoteImplicit: "— no brackets",
raNoteChain: "— chaining without ()",
raAssignment: "Assignment",
raNoteAssignment: "Last assignment is returned automatically",
raConditions: "Conditions",
raNoteComparison: "Comparison operators: = <> < > <= >=",
},
};

Expand Down
34 changes: 34 additions & 0 deletions languages/sv.ts
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,40 @@ const sv: LanguageDefinition = {
"Warning: This save file was created with a different language ({{fileLang}}). Importing may cause issues.",
viewLabel: "View",
changelog: "Changelog",
modeSQL: "SQL",
modeRA: "Relationsalgebra",
generatedSQL: "Genererad SQL",
raParseError: "Relationsalgebra-fel: {{message}}",
raPlaceholder: "-- Skriv ett relationsalgebrauttryck\n-- Klicka på 'RA-referens' för syntax",
raReference: "Relationsalgebrareferens",
raUnaryOps: "Unära operatorer",
raBinaryOps: "Binära operatorer",
raColOp: "Operator",
raColSyntax: "Syntax",
raColDesc: "Beskrivning",
raDescSelection: "Selektion — filtrera rader",
raDescProjection: "Projektion — välj kolumner",
raDescRename: "Namnbyte — byt namn på kolumner",
raDescGroup: "Gruppering med aggregat",
raDescSort: "Sortering",
raDescDistinct: "Ta bort dubbletter",
raDescCross: "Korsprodukt",
raDescNatJoin: "Naturlig join",
raDescThetaJoin: "Theta-join (villkorlig)",
raDescUnion: "Union",
raDescIntersect: "Snitt",
raDescMinus: "Differens",
raDescDivide: "Division",
raNotation: "Notationsalternativ",
raNoteBrackets: "— hakparenteser",
raNoteCurly: "— klammerparenteser",
raNoteLaTeX: "— LaTeX-stil",
raNoteImplicit: "— utan parenteser",
raNoteChain: "— kedjning utan ()",
raAssignment: "Tilldelning",
raNoteAssignment: "Sista tilldelningen returneras automatiskt",
raConditions: "Villkor",
raNoteComparison: "Jämförelseoperatorer: = <> < > <= >=",
},
};

Expand Down
Loading
Loading