Skip to content
/ csvdb Public
forked from alexpetrov/csvdb

First task on clojurecourse.by. Sample csv based database query language realization.

License

Notifications You must be signed in to change notification settings

segitwo/csvdb

 
 

Repository files navigation

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 © 2014 Dmitry Bushenko

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

About

First task on clojurecourse.by. Sample csv based database query language realization.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Clojure 100.0%