Tutorial
: https://docs.google.com/presentation/d/1pWi8B6cO_8JpxMBy7PVLMbJbRkeMqWH3LJh4lwxnRN8/htmlpresentRepo
: https://github.com/zotvent/slick-example
Цель этого проекта - показать, как можно использовать библиотеку slick
в качестве Functional Relational Mapping для Scala.
- Автоматически создает в базе данных таблицу с именем
BOOKS
- Выполняет CRUD-операции
- REST-API построен на Akka HTTP
- HikaryCP используется как пул соединений
Эти инструкции позволят запустить экземпляр проекта на локальном компьютере в целях разработки и тестирования.
В этом примере используется postgresql
(убедитесь, что он установлен на компьютере).
- После установки создайте базу данных (по умолчанию имя базы данных
postgres
). - Замените значения user и password в файле
application.conf
самостоятельно (по умолчанию user и password к базе данныхpostgres
/postgres
). - В базе данных создайте схему (по умолчанию схема базы данных
public
). - Если вам нужно другое имя схемы, вы должны изменить его в
kz.example.database.table.BooksTable
в определении классаBooks
Перед запуском проекта загрузите все зависимости. Сделать это можно например командой с терминала:
sbt clean compile
И запустите проект, например командой с терминала:
sbt run
Если sbt не может автоматически найти файл application.conf
, тогда укажите это явно:
sbt run -Dconfig.resource=application.conf
Теперь Вы можете использовать slick через интерфейс REST.
add book
curl -X POST \
http://localhost:8080/books \
-H 'Content-Type: application/json' \
-H 'Postman-Token: b2650af6-4348-4681-9ad6-6f760c2124b3' \
-H 'cache-control: no-cache' \
-d '{
"id": 1,
"name": "test name",
"author": "test author"
}'
{
"id": 4,
"name": "test name",
"author": "test author"
}
get book
curl -X GET \
http://localhost:8080/books/1 \
-H 'Postman-Token: cfea87e8-9f4a-4ab3-914c-3926f0cf5fad' \
-H 'cache-control: no-cache'
{
"id": 4,
"name": "test name",
"author": "test author"
}
update book
curl -X PUT \
http://localhost:8080/books \
-H 'Content-Type: application/json' \
-H 'Postman-Token: 952b1e75-907f-4ff8-a8a3-4b16bb2f6ecd' \
-H 'cache-control: no-cache' \
-d '{
"id": 1,
"name": "test update name",
"author": "test update author"
}'
{
"id": 4,
"name": "test update name",
"author": "test update author"
}
delete book
curl -X DELETE \
http://localhost:8080/books/1 \
-H 'Postman-Token: 826f5900-865e-46fc-bb02-ab4023863d3e' \
-H 'cache-control: no-cache'
"Book was deleted"