Skip to content

Latest commit

 

History

History
27 lines (17 loc) · 2.16 KB

File metadata and controls

27 lines (17 loc) · 2.16 KB

csvdb

Задание: необходимо сделать простую базу данных на основе CSV-файлов. Файлы, с которыми предлагается работать в задании: student.csv, student_subject.csv, subject.csv. Эти три файла реализуют связи типа "многие-ко-многим", т.е. один student может изучать множество subject-ов, один subject может принадлежать множеству student-ов.

Заготовка кода представлена в файле src/csvdb/core.clj. Поскольку это простая база данных, мы будем реализовывать только различные виды запроса select, например, такие:

 (select student
   :where #(> (:id %) 1)
   :order-by :year
   :limit 2)

(select student-subject
  :limit 2
  :joins [[:student_id student :id] [:subject_id subject :id]])

Выполнять эти запросы нужно в REPL, поэтому никакой дополнительной системы ввода-вывода для консоли писать не нужно.

Часть функций в заготовке помечены ключевым словом :ImplementMe -- эти функции вам необходимо реализовать. Перед каждой такой функцией в комментариях дан пример вызова функций, а снизу, после знака => -- результат вызова этой функции. В комментарии, после слова Hint, дана подсказка: список clojure-функций, которые я использовал для реализации этой функции.

После того, как вы реализуете все функции, выполните команду 'lein test' и убедитесь, что тесты проходят.

License

Copyright © Dmitry Bushenko

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.