https://github.com/lexxai/goit_python_web_hw_11
GoIT, Python WEB, Homework number 11. FastAPI. PostgreSQL. Docker. REST API. ORM SQLAlchemy. Pydantic. Jinga. Alembic.
https://github.com/lexxai/goit_python_web_hw_11
alembic docker fastapi jinga jinga2 postgresql pydantic rest-api sqlalchemy
Last synced: 2 months ago
JSON representation
GoIT, Python WEB, Homework number 11. FastAPI. PostgreSQL. Docker. REST API. ORM SQLAlchemy. Pydantic. Jinga. Alembic.
- Host: GitHub
- URL: https://github.com/lexxai/goit_python_web_hw_11
- Owner: lexxai
- License: mit
- Created: 2023-11-06T15:12:01.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-08T00:00:11.000Z (over 2 years ago)
- Last Synced: 2025-10-10T01:07:54.665Z (9 months ago)
- Topics: alembic, docker, fastapi, jinga, jinga2, postgresql, pydantic, rest-api, sqlalchemy
- Language: Python
- Homepage:
- Size: 842 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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
1. Використання ORM SQLAlchemy для роботи з базою даних
1. В якості бази даних слід використовувати PostgreSQL.
1. Підтримка CRUD операцій для контактів
1. Підтримка зберігання дати народження контакту
1. Надання документів для API
1. Використання модуля перевірки достовірності даних Pydantic
## Виконання
### Index Templated page

### PostgreSQL. model Contacts. ORM SQLAlchemy, Alembic

### FastAPI CRUD

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

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

## DOCKER
### BUILD

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)

## OpenAPI DOCS
[openapi.json](doc/openapi.json) - offline
[openapi.json](http://127.0.0.1:9000/openapi.json) - online
[online FastAPI Docs](http://127.0.0.1:9000/docs) - online FastAPI