Skip to content

lexxai/goit_python_web_hw_11

Repository files navigation

goit_python_web_hw_11

#GoIT, #Python #WEB, Homework number 11. #FastAPI. #PostgreSQL. #Docker. #RESTAPI. #ORM #SQLAlchemy. #Pydantic. #Alembic.

Домашнє завдання #11

Мета цього домашнього завдання

Cтворити REST API для зберігання та управління контактами. API повинен бути побудований з використанням інфраструктури FastAPI та використовувати SQLAlchemy для управління базою даних.

Контакти повинні зберігатися в базі даних та містити в собі наступну інформацію:

  • Ім'я
  • Прізвище
  • Електронна адреса
  • Номер телефону
  • День народження
  • Додаткові дані (необов'язково)

API повинен мати можливість виконувати наступні дії:

  • Створити новий контакт
  • Отримати список всіх контактів
  • Отримати один контакт за ідентифікатором
  • Оновити існуючий контакт
  • Видалити контакт

На придачу до базового функціоналу CRUD API також повинен мати наступні функції:

  • Контакти повинні бути доступні для пошуку за іменем, прізвищем чи адресою електронної пошти (Query).
  • API повинен мати змогу отримати список контактів з днями народження на найближчі 7 днів.

Загальні вимоги

  1. Використання фреймворку FastAPI для створення API
  2. Використання ORM SQLAlchemy для роботи з базою даних
  3. В якості бази даних слід використовувати PostgreSQL.
  4. Підтримка CRUD операцій для контактів
  5. Підтримка зберігання дати народження контакту
  6. Надання документів для API
  7. Використання модуля перевірки достовірності даних Pydantic

Виконання

Index Templated page

Index

PostgreSQL. model Contacts. ORM SQLAlchemy, Alembic

pg-table

FastAPI CRUD

api-crud-01

BONUS:

Контакти повинні бути доступні для пошуку за іменем, прізвищем чи адресою електронної пошти (Query).

api-search-01

API повинен мати змогу отримати список контактів з днями народження на найближчі 7 днів.

api-search-01

DOCKER

BUILD

api-docker-01

DockerHUB: https://hub.docker.com/r/lexxai/web_hw11

RUN

.env

POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=XXXXXXXX
POSTGRES_HOST=pg,localhost
POSTGRES_PORT=5432
POSTGRES_DATABASE=postgres
docker-compose up -d code

(scripts/docker_run_docker-compose.cmd)

api-docker-01

OpenAPI DOCS

openapi.json - offline

openapi.json - online

online FastAPI Docs - online FastAPI