diff --git a/README.md b/README.md index f206eb8..6333886 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,68 @@ # prawo-jazdy-resources +`db/main.py` is an *extremely* badly-written script that reads files published by the Ministry of Infrastructure and imports them into a database; reads data from `pytania.csv` and `punkty.csv` +- `db/pytania.csv` is the `katalog_pytania_egzminacyjne_kandydat__14112024.xlsx` file from [here](https://www.gov.pl/web/infrastruktura/prawo-jazdy), opened in Libreoffice Calc and saved as csv +- `db/punkty.csv` isn't published by the Ministry, so you have to send a freedom of information request to acquire it; it is processed the same way as `pytania.csv` + +The database structure is as follows: +```sql +CREATE TABLE tasks ( + id integer NOT NULL, + correct_answer boolean, + media_url text, + weight smallint +); + +CREATE TABLE questions ( + task_id integer, + lang character(2), + text text +); + +CREATE TABLE tasks_advanced ( + id integer NOT NULL, + correct_answer character(1), + media_url text, + weight smallint +); + +CREATE TABLE questions_advanced ( + task_id integer, + lang character(2), + text text, + answer_a text, + answer_b text, + answer_c text +); + +CREATE TABLE categories ( + name text, + task_id integer +); +``` + +The basic tasks can be queried like so: +```sql +SELECT tasks.correct_answer, tasks.media_url, tasks.weight, questions.text +FROM tasks + LEFT JOIN questions ON tasks.id = questions.task_id + LEFT JOIN categories ON tasks.id = categories.task_id +WHERE + categories.name = 'B' AND + questions.lang = 'PL' +ORDER BY random() +LIMIT (20); +``` +And the advanced tasks like this: +```sql +SELECT tasks_advanced.correct_answer, tasks_advanced.media_url, tasks_advanced.weight, + questions_advanced.text, questions_advanced.answer_a, questions_advanced.answer_b, questions_advanced.answer_c +FROM tasks_advanced + LEFT JOIN questions_advanced ON tasks_advanced.id = questions_advanced.task_id + LEFT JOIN categories ON tasks_advanced.id = categories.task_id +WHERE + categories.name = 'B' AND + questions_advanced.lang = 'PL' +ORDER BY random() +LIMIT (20); +``` \ No newline at end of file