Skip to content

eivankin/gpn-backend-test-task

Repository files navigation

GPN Backend Test Task

Инструкции по запуску

  1. Склонировать репозиторий:

    git clone https://github.com/eivankin/gpn-backend-test-task
  2. Если установлен пакет just (sudo apt install just), то можно запустить приложение командой:

    just run-demo

    Эта команда включает в себя сборку docker-образа, заполнение базы данных тестовыми примерами и запуск приложения. Сервис будет доступен по адресу http://localhost:8000. Swagger-документация будет доступна по адресу http://localhost:8000/docs. Будут созданы и доступны для авторизации администратор с логином admin и паролем admin, а также пользователь с логином user_1 и паролем user_1.

  3. Для запуска без использования just можно воспользоваться командами:

    docker compose build application
    docker compose run --service-ports application sh -c "sleep 1 && uv run alembic upgrade head && uv run python -m scripts.seed_db && uv run python -m app"

Описание доступных команд с just

  • run-demo - запуск приложения с заполнением базы данных тестовыми примерами;
  • run - запуск приложения;
  • seed - заполнение базы данных тестовыми примерами;
  • install - установка зависимостей и создание виртуального окружения;
  • build - сборка docker-образа;
  • lint - проверка стиля кода;
  • test - запуск тестов;
  • down - остановка docker-контейнеров;
  • sh - запуск интерактивного bash-сессии внутри docker-контейнера;

Описание задачи

Разработать API для управления заметками на FastAPI.

Объект "заметка" имеет следующие поля:

  • title - Заголовок длиной не более 256 символов;
  • body - Тело не более 65536 символов.

Функционал приложения должен быть следующим:

  1. Авторизация пользователя с ролью "User" и ролью "Admin";

  2. Авторизованный пользователь системы с ролью "User" должен иметь возможность работать с заметками следующим образом:

    • Cоздать заметку;
    • Изменить заметку;
    • Удалить заметку;
    • Получать список всех заметок;
    • Получать конкретную заметку;

    У пользователя с ролью "User" должны быть права для работы с заметками которые создавал он сам. Делать какие либо действия с заметками, в том числе и просмотр заметок других пользователей, возможность у этой роли быть не должно.

  3. Авторизованный пользователь системы с ролью "Admin" должен иметь возможность работать с заметками следующим образом:

    • Восстановить удаленную заметку;
    • Получить конкретную заметку;
    • Получить список всех заметок;
    • Получить список всех заметок конкретного пользователя;
  4. Все перечисленные действия всех ролей необходимо логгировать в файл;

  5. *Добавить юнит-тесты;

  6. *Добавить Dockerfile для запуска проекта с помощью docker;

  7. Добавить инструкцию запуска проекта в README.md.

Благодарности

Этот проект создан на базе шаблона fastapi-sqlalchemy-template

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •