mirror of
https://github.com/wowlikon/LiB.git
synced 2026-02-04 04:31:09 +00:00
49d1681bcbc476640222f5552ab278de98e7dcd1
LiB
Это проект приложения на FastAPI - современном веб фреймворке для создания API на Python. Я использую Pydantic для валидации данных, SQLModel для взаимодействия с базой данных, Alembic для управления миграциями, PostgreSQL как систему базы данных и Docker Compose для легкого развертывания.
Ключевые элементы:
- FastAPI: Предоставляет высокопроизводительность и простоту для разработки RESTful API, поддерживает асинхронные операции и автоматическую генерацию документации.
- Pydantic: Используется для валидации данных и сериализации, позволяет легко определить схемы данных.
- SQLModel: Объединяет SQLAlchemy и Pydantic, включая операции с базой данных с помощью классов Python.
- Alembic: Инструмент для управления миграциями базы данных, упрощающий отслеживание и применение изменений в схеме базы данных.
- PostgreSQL: Надежная реляционная база данных для хранения данных.
- Docker Compose: Упрощает развертывание приложения и его зависимостей в контейнерах.
Инструкция по установке
-
Клонируйте репозиторий:
git clone https://github.com/wowlikon/libraryapi.git -
Перейдите в каталог проекта:
cd libraryapi -
Настройте переменные окружения:
edit .env -
Соберите контейнеры Docker:
docker compose build -
Запустите приложение:
docker compose up api -d
Для создания новых миграций:
alembic revision --autogenerate -m "Migration name"
Для запуска тестов:
docker compose up test
Для добавление данных для примера используйте:
python data.py
Эндпоинты API
Авторы
| Метод | Эндпоинты | Описание |
|---|---|---|
| POST | /api/authors |
Создать нового автора |
| GET | /api/authors |
Получить список всех авторов |
| GET | /api/authors/{id} |
Получить автора по ID с книгами |
| PUT | /api/authors/{id} |
Обновить автора по ID |
| DELETE | /api/authors/{id} |
Удалить автора по ID |
Книги
| Метод | Эндпоинты | Описание |
|---|---|---|
| POST | /api/books |
Создать новую книгу |
| GET | /api/books |
Получить список всех книг |
| GET | /api/book/{id} |
Получить книгу по ID с авторами |
| PUT | /api/books/{id} |
Обновить книгу по ID |
| DELETE | /api/books/{id} |
Удалить книгу по ID |
Жанры
| Метод | Эндпоинты | Описание |
|---|---|---|
| POST | /api/genres |
Создать новый жанр |
| GET | /api/genres |
Получить список всех жанров |
| GET | /api/genres/{id} |
Получить жанр по ID |
| PUT | /api/genres/{id} |
Обновить жанр по ID |
| DELETE | /api/genres/{id} |
Удалить жанр по ID |
Связи
| Метод | Эндпоинты | Описание |
|---|---|---|
| GET | /authors/{id}/books |
Получить список книг для автора |
| GET | /books/{id}/authors |
Получить список авторов для книги |
| POST | /relationships/author-book |
Связать автор-книга |
| DELETE | /relationships/author-book |
Разделить автор-книга |
| GET | /genres/{id}/books |
Получить список книг для жанра |
| GET | /books/{id}/genres |
Получить список жанров для книги |
| POST | /relationships/genre-book |
Связать автор-книга |
| DELETE | /relationships/genre-book |
Разделить автор-книга |
Другие
| Метод | Эндпоинты | Описание |
|---|---|---|
| GET | /api/info |
Получить общую информацию о сервисе |
| GET | /api/stats |
Получить статистическую информацию о сервисе |
erDiagram
USER {
int id PK
string username UK
string email UK
string full_name
string password
boolean is_active
boolean is_verified
}
USER_ROLE {
int user_id FK
string role
}
LOAN {
int id PK
int book_id FK
int user_id FK
datetime borrowed_at
datetime due_date
datetime returned_at
}
BOOK {
int id PK
string title
string description
}
AUTHOR {
int id PK
string name
string bio
}
GENRE {
int id PK
string name
}
AUTHOR_BOOK {
int author_id FK
int book_id FK
}
GENRE_BOOK {
int genre_id FK
int book_id FK
}
USER ||--o{ USER_ROLE : "имеет роли"
USER ||--o{ LOAN : "берёт книги"
LOAN }o--|| BOOK : "выдача"
AUTHOR ||--o{ AUTHOR_BOOK : "пишет"
AUTHOR_BOOK }o--|| BOOK : "авторство"
GENRE ||--o{ GENRE_BOOK : "содержит"
GENRE_BOOK }o--|| BOOK : "жанр"
Используемые технологии
- FastAPI: Современный web фреймворк для построения API с использованием Python, известный своей скоростью и простотой использования.
- Pydantic: Библиотека для валидации данных и управления настройками, использующая аннотации типов Python.
- SQLModel: Библиотека для взаимодействия с базами данных с использованием классов Python, объединяющая функции SQLAlchemy и Pydantic.
- Alembic: Легковесный инструмент для миграции базы данных на основе SQLAlchemy.
- PostgreSQL: Сильная, открытая реляционная система управления базами данных.
- Docker: Платформа для разработки, распространения и запуска приложений в контейнерах.
- Docker Compose: Инструмент для определения и запуска многоконтейнерных приложений Docker.
- Tailwind: CSS-фреймворк, позволяющий стилизовать веб-интерфейсы, применяя готовые низкоуровневые классы.
- Cash: Микро JavaScript-библиотека, созданная как очень быстрая и компактная альтернатива jQuery.
Description
RESTful API для управления библиотекой книг, реализованное с помощью FastAPI
https://lib.alt.0x174.su
Languages
HTML
36.8%
JavaScript
33.6%
Python
28%
Shell
0.7%
CSS
0.7%
Other
0.2%
