Skip to content

fIIame/library_manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 Library Manager

Простой консольный проект для управления библиотекой с использованием SQLite.
Позволяет добавлять, искать, обновлять и удалять книги из базы данных.


🚀 Функционал

  • Добавление книги (название, автор, год)
  • Получение информации о книге по названию
  • Просмотр всех книг
  • Обновление статуса книги (например, “в наличии” / “выдана”)
  • Удаление книги
  • Автоматическое создание базы данных при первом запуске
  • Полное покрытие unit-тестами с использованием pytest

🧱 Структура проекта

library_manager/
│
├── core/
│   ├── enums.py               # Enum со статусами книг
│   ├── utils.py               # Утилиты и валидации
│   └── custom_exceptions.py   # Пользовательские исключения
│
├── database/
│   ├── __init__.py
│   ├── manager.py             # Подключение к базе данных
│   ├── repositories.py        # CRUD-операции с таблицей Library
│   └── models.py              # Модель Book
│
├── library/
│   ├── __init__.py
│   └── services.py            # Логика работы с репозиторием
│
├── tests/
│   └── test_library.py        # Unit-тесты для всего функционала
│
├── main.py                    # Точка входа, консольный интерфейс
└── README.md                  # Этот файл

⚙️ Установка и запуск

  1. Клонируй репозиторий:
git clone https://github.com/fIIame/library_manager
cd library_manager
  1. Создай виртуальное окружение:
python -m venv .venv
source .venv/bin/activate    # macOS / Linux
# .venv\Scripts\activate     # Windows
  1. Запусти проект:
python main.py
  1. Укажи путь к базе данных (или оставь пустым, чтобы создать database.db в текущей директории):
Path: data/  

🧪 Тестирование

Проект полностью покрыт тестами с использованием pytest.

Запуск тестов

pytest -v

Что тестируется

  • Добавление книги
  • Поиск по названию
  • Обновление статуса
  • Получение всех книг
  • Удаление книги
  • Валидация входных данных
  • Обработка исключений

Тесты используют временную БД (tmp_path), поэтому не затрагивают реальную базу.

Покрытие кода

Чтобы посмотреть coverage:

pip install pytest-cov
pytest --cov=database --cov=library --cov=core -v

💡 Пример работы

Path: data/
>>> add
Title: Мастер и Маргарита
Author: Михаил Булгаков
Year: 1967

>>> get
Title: Мастер и Маргарита
Book(book_id=1, title='Мастер и Маргарита', author='Михаил Булгаков', year=1967, status='в наличии')

>>> update
Title: Мастер и Маргарита
New status: выдана

>>> getall
Book(book_id=1, title='Мастер и Маргарита', author='Михаил Булгаков', year=1967, status='выдана')

>>> delete
Title: Мастер и Маргарита
Book deleted successfully!

🧰 Используемые технологии

  • Python 3.10+
  • SQLite3
  • Logging
  • pytest + pytest-cov

🧑‍💻 Автор

Misha Kharchenko
Data Analyst / Python Developer


About

library data tracking application

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages