Skip to content

Backend-ITMO-2021/Lecture-10

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lecture 10

Scala DB

Дедлайн 5/06/21 00:01 - 40 баллов

Дедлайн 12/06/21 00:01 - 15 баллов

Задание выполняется на Scala, весь новый функционал приложения должен быть покрыт тестами, если тесты не проходят, требуется их исправить. В описании пулреквеста требуется приложить гифку работы приложения (идеальный вариант) или скрины.

  1. (10) Реализуйте два запроса в объекте Queries:

    • topTenLanguagesSpokenByCities - требуется вывести топ 10 языков по количеству городов, в которых на них говорят. Каждый город находится в стране, в каждой стране говорят на нескольких языках. Считается, что если в стране говорят на языке, то и в городе говорят. Функция возвращает список пар название языка -> количество городов, в которых на нём говорят.
    • topTenLanguagesSpokenByPopulation - требуется вывести топ 10 языков по количеству людей, которые на нём говорят. Каждый город находится в стране, в каждой стране говорят на нескольких языках и известен процент говорящих на этом языке. Считается, что процент говорящих на языке в стране равен проценту в каждом городе этой страны. Функция возвращает список пар название языка -> количество людей которые на нём говорят (округление делается при помощи .toLong).

    Quill поддерживает groupBy (всегда должен быть продолжен map) и sortBy. Если возникли сложности, рекомендуется сначала написать этот запрос на SQL, а потом транслировать в скалу.

  2. (15) Реализуйте функционал из пунктов 1-2 HW8 с поддержкой базы данных. Для удобства порядковый номер сообщения можно реализовать как serial. Дополнительно требуется хранить время отправки сообщения.

  3. (15) Реализуйте API позволяющий запрашивать сообщения:

description method url data response
gets messages from specific user GET /messages/$username {messages: ["message 1", "message 2", ...]}
gets messages count by user GET /messages/$username/stats {stats: [count: 239]}
top 10 chatters by messages count GET /messages/stats/top {top: [{username: "user", count: 239}, ...]}
gets all current messages, filtered by date GET /messages {from:?$date, to:?$date} {messages: [{id: id, username: "user", message: "message", replyTo:? optionalInt}, ...]}

Фильтр по дате опционален и работает как Epoch Timestamp в миллисекундах.

Docs:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published