osdb/notes.org
Khaïs COLIN 28cb288eaf
feat(parser): implement insert command parsing
Implements the parse_insert_command function to handle the insert
statement according to the grammar definition. The function now
correctly parses the command format insert int string string and creates
a structured Statement::Insert with the id, username, and email fields.
2025-06-03 17:48:36 +02:00

5.9 KiB
Raw Blame History

Notes

DONE show errors with ariadne

[X] errors should have a generic show() function

CLOCK: [2025-05-03 sam. 18:40][2025-05-03 sam. 18:46] => 0:06

DONE OSDBError::display() should take a filename and display it alongside the error

CLOCK: [2025-05-03 sam. 21:24][2025-05-03 sam. 21:28] => 0:04

DONE OSDBError::display() should take an input string, to be able to resolve spans inside the error

CLOCK: [2025-05-03 sam. 21:28][2025-05-03 sam. 21:30] => 0:02

DONE OSDBError::display() should generate ariadne errors and return those

CLOCK: [2025-05-03 sam. 21:30][2025-05-03 sam. 21:50] => 0:20

DONE error display should include a span to show where the error occured

CLOCK: [2025-05-03 sam. 21:51][2025-05-03 sam. 21:54] => 0:03

DONE deduplicate error display code

CLOCK: [2025-05-03 sam. 21:55][2025-05-03 sam. 22:01] => 0:06

DONE snapshot testing

DONE Find the snapshot testing library

CLOCK: [2025-05-03 sam. 18:48][2025-05-03 sam. 18:49] => 0:01

DONE document myself on insta, the snapshot testing library

CLOCK: [2025-05-03 sam. 18:49][2025-05-03 sam. 18:57] => 0:08

DONE insta test startup message

CLOCK: [2025-05-03 sam. 19:00][2025-05-03 sam. 19:05] => 0:05

DONE insta test insert

CLOCK: [2025-05-03 sam. 21:10][2025-05-03 sam. 21:14] => 0:04 CLOCK: [2025-05-03 sam. 19:08][2025-05-03 sam. 19:21] => 0:13

DONE all display of command results must be made via a display method on CommandExecutionResult

CLOCK: [2025-05-03 sam. 21:02][2025-05-03 sam. 21:09] => 0:07

DONE insta test select

CLOCK: [2025-05-03 sam. 21:15][2025-05-03 sam. 21:16] => 0:01

DONE insta test .exit

CLOCK: [2025-05-03 sam. 21:16][2025-05-03 sam. 21:18] => 0:02

DONE insta test wrong statement

CLOCK: [2025-05-03 sam. 21:18][2025-05-03 sam. 21:21] => 0:03

DONE insta test wrong meta-command

CLOCK: [2025-05-03 sam. 21:21][2025-05-03 sam. 21:22] => 0:01

DONE exit message is not displayed when pressing C-d   bug

CLOCK: [2025-05-03 sam. 19:06][2025-05-03 sam. 19:07] => 0:01

DONE switch statement parsing to more extensible token-based algorithm

CLOCK: [2025-05-04 dim. 12:07][2025-05-04 dim. 12:10] => 0:03 CLOCK: [2025-05-04 dim. 12:10][2025-05-04 dim. 12:22] => 0:12

DONE recognize meta-commands as tokens

CLOCK: [2025-05-04 dim. 13:32][2025-05-04 dim. 13:35] => 0:03 CLOCK: [2025-05-04 dim. 13:27][2025-05-04 dim. 13:32] => 0:05

DONE CommandParseError must have a ScanError variant with an Into impl

CLOCK: [2025-05-04 dim. 13:35][2025-05-04 dim. 13:38] => 0:03

DONE ScanErrors must be convertible to ariadne reports

DONE Remove the CommandParseError Display implementation

CLOCK: [2025-05-04 dim. 13:38][2025-05-04 dim. 13:44] => 0:06

DONE implement OSDBError for ScanError

CLOCK: [2025-05-04 dim. 13:45][2025-05-04 dim. 13:56] => 0:11

DONE remove token types which are not recognized at all

DONE create a generic parse command that parses string into tokens into Command

CLOCK: [2025-05-04 dim. 14:01][2025-05-04 dim. 14:14] => 0:13

DONE parse tokens into meta-commands

DONE error offsets are incorrect

DONE remove old FromStr parser implementation

DONE use a better readline impl

DONE inform myself on the different alternatives and decide on one

i will use rustyline, since it seems like the most feature-complete

DONE do the impl

DONE make history work

DONE have the rl instance be spawned from main

DONE figure out how to locate the app data directory on linux

DONE create our own app data directory

DONE load and save the history from a file in this directory

DONE handle non-interactive input better

DONE show marking where error occurs

DONE remove uneeded error variants

DONE parse integers

DONE Function to get a token until condition is false

DONE Parse the integer

DONE parse strings

DONE better error message display for unclosed " in string

DONE print errors to stderr

DONE write a proper grammar

DONE .about meta-command

DONE .version meta-command

TODO .license meta-command

TODO .help meta-command

TODO parse insert statements in the form

insert <id:int> <username:string> <email:string>

TODO Row struct

TODO parse row insert

TODO separate statements with semicolons

TODO in case of parse error, skip until next semicolon to better recover

TODO serialize/deserialize row to/from raw bytes

TODO look for best practices for creating binary formats

WAIT cli tests using insta-cmd

WAIT autocompletion

needs a more complicated parser for that to make sense

WAIT tweak rustyline it to make multiline entry work

need to terminate commands with semicolons for that to make sense