Giter Club home page Giter Club logo

java-filmorate's Introduction

Схема Базы Данных

Общий вид схемы приведен на изображении ниже

db-sheme.png

Справочник: жанры фильмов [genres]

Наименование поля Тип NOT NULL PK DEFAULT Описание
id bigserial true true AI ИД жанра
name varchar true false Наименование жанра

Справочник: рейтинги фильмов [ratings]

Наименование поля Тип NOT NULL PK DEFAULT Описание
id bigserial true true AI ИД рейтинга
name varchar true false Наименование рейтинга

Фильмы [films]

Наименование поля Тип NOT NULL PK DEFAULT Описание
id bigserial true true AI ИД фильма
name varchar true false Наименование фильма
description text false false Описание
release_date date false false Дата выхода
duration integer false false Продолжительность, сек.
genre_id bigserial true false ИД жанра (справочник жанров)
rating_id bigserial true false ИД рейтинга (справочник рейтингов)
created_at timestamp true false now() Дата и время внесения записи

Получить список всех фильмов с наименованием жанра и рейтинга

SELECT films.name, films.description, films.release_date, films.duration, genres.name, ratings.name FROM films JOIN genres ON genres.id = films.genre_id JOIN ratings ON ratings.id = films.rating_id

Пользователи [users]

Наименование поля Тип NOT NULL PK DEFAULT Описание
id bigserial true true AI ИД пользователя
email varchar true false Адрес электронной почты
login varchar true false Логин
name varchar true false Имя пользователя
birthday date false false Дата рождения
created_at timestamp true false now() Дата и время внесения записи
  • Поле email является уникальным (unique)
  • Поле login является уникальным (unique)

Оценка фильмов пользователями [film_user_ratings]

Наименование поля Тип NOT NULL PK DEFAULT Описание
id bigserial true true AI ИД связи
user_id bigserial true false ИД пользователя
film_id bigserial true false ИД фильма
created_at timestamp true false now() Дата и время внесения записи
  • Сочетание полей user_id, film_id является уникальным (unique)

Получить топ-10 фильмов, согласно голосам пользователей

SELECT films.name, films.description, films.release_date, films.duration, COUNT(film_user_ratings.id) FROM films LEFT JOIN film_user_ratings ON film_user_ratings.film_id = films.id GROUP BY films.id ORDER BY COUNT(film_user_ratings.id) DESC LIMIT 10

Подписки пользователей [user_follows]

Наименование поля Тип NOT NULL PK DEFAULT Описание
id bigserial true true AI ИД
following_user_id bigserial true false ИД того, кто отправил запрос
followed_user_id bigserial true false ИД принимающего запрос
state smallserial true false 0 Состояния подписки
created_at timestamp true false now() Дата и время внесения записи
  • Сочетание полей following_user_id, followed_user_id является уникальным (unique)
  • Состояние подписки: state может принимать два значения: запрос отправлен (0), запрос принят (1)

Получить новые запросы на подписки для пользователя

SELECT users.name FROM users JOIN user_follows ON user_follows.following_user_id = users.id WHERE user_follows.followed_user_id = {ID} AND state = 0

  • {ID} - ИД пользователя, для которого требуется получить список запросов на подписку

Получить список друзей

SELECT users.name FROM users JOIN ( SELECT following.following_user_id AS user_id FROM user_follows AS following WHERE following.followed_user_id = {ID} AND state = 1 UNION SELECT followed.followed_user_id AS user_id FROM user_follows AS followed WHERE followed.following_user_id = {ID} AND state = 1) AS friends ON friends.user_id = users.id

  • {ID} - ИД пользователя, для которого требуется получить список друзей

java-filmorate's People

Contributors

leliaoff avatar

Watchers

 avatar

java-filmorate's Issues

тесты противоречат гитигнору

if [[ "$FILENAMES" =~ ".class" ]] [[ "$FILENAMES" =~ ".jar" ]] [[ "$FILENAMES" =~ "mvn" ]] [[ "$FILENAMES" =~ ".DS_Store" ]] \ [[ "$FILENAMES" =~ ".idea" ]] [[ "$FILENAMES" =~ ".iws" ]] [[ "$FILENAMES" =~ ".iml" ]] [[ "$FILENAMES" =~ ".ipr" ]] \ [[ "$FILENAMES" =~ ".db" ]] [[ "$FILENAMES" =~ ".log" ]] [[ "$FILENAMES" =~ "out/" ]] [[ "$FILENAMES" =~ "target/" ]] then echo "The pull request contains the binary files. Remove them (*.class, *.jar, *.DS_Store ...) from PR" echo "Pull request содержит двоичные файлы. Удалите их (*.class, *.jar, *.DS_Store ...) из PR" exit -3

против

!.mvn/wrapper/maven-wrapper.jar

fix: исправление ошибки в Postman тесте "Review update to positive"

В теле запроса передаются

  "userId": 2,
  "filmId": 2,

В тесте проверяется что они равны 1

pm.test("Test review 'userId' field", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData).to.have.property('userId');
    pm.expect(jsonData.userId, '"userId" field must be "1"').to.eql(1);
});
pm.test("Test review 'filmId' field", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData).to.have.property('filmId');
    pm.expect(jsonData.filmId, '"filmId" field must be "1"').to.eql(1);
});

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.