Skip to content

Update 2 files

vsevolod Oc requested to merge duraley into main

DatabaseManager

getConnection(): Добавлена проверка, закрыто ли соединение.
executeQuery, executeUpdate: Использование try-finally вместо use для закрытия ресурсов (PreparedStatement, ResultSet).
close(): Добавлена проверка, закрыто ли соединение перед закрытием.

Order

map(): Явные имена параметров для лучшей читаемости.
OrderStatus: Использование snake_case для констант перечисления 
valueMap: Создание словаря valueMap для быстрого поиска статуса по строке 
fromValue: Переименовано, чтобы отразить, что работаем со значением 
toString(): Теперь просто возвращает сохраненное значение статуса

ItemOrder


Создал явные имена параметров при создании объекта ItemOrder в функции map. Это улучшает читаемость кода и позволяет легче понять, какое значение какому полю присваивается.

Item

Создал явные имена параметров при создании объекта Itemr в функции map. Это улучшает читаемость кода и позволяет легче понять, какое значение какому полю присваивается.

OrderQuery


Класс OrdersQuery содержит SQL-запросы для работы с таблицей orders:

initQuery: Создаёт таблицу orders (если она не существует).
insertData: Добавляет новую запись в таблицу orders.
selectAll: Получает все незаархивированные заказы.
selectItemsByOrderId: Получает товары в заказе по ID заказа.
updateStatus: Обновляет статус заказа.
delete: Архивирует заказ (устанавливает дату удаления).

ItemsQuery


Класс ItemsQuery содержит SQL-запросы для работы с таблицей items, которая хранит информацию о товарах:

initQuery: Создаёт таблицу items, если она ещё не существует.
insertData: Добавляет новый товар в таблицу items.
selectAll: Получает все незаархивированные товары.
selectById: Получает товар по его ID.
update: Обновляет информацию о товаре.
delete: Помечает товар как удаленный (устанавливает deleted_at).

ItemsOrdersQuery


Класс ItemsOrdersQuery содержит SQL-запросы для работы с таблицей items_orders, которая связывает заказы и товары (таблица “многие-ко-многим”):

initQuery: Создаёт таблицу items_orders, если она не существует.
insertQuery: Добавляет запись, связывающую заказ с товаром. Запись содержит информацию о количестве и стоимости товара в заказе.

OrderRepository

OrderRepository: Класс, отвечающий за операции с заказами в БД (CRUD). Включает создание таблицы, добавление, выборку, обновление статуса и “удаление” (архивацию) заказов. Использует транзакции и PreparedStatement для безопасности и целостности данных, а use для закрытия ресурсов. Реализует паттерн Repository.

ItemRepository


Позволяет получать все товары, получать товар по ID, добавлять товары, обновлять информацию о товаре и “удалять” товар (помечать как удаленный).

ItemsOrderRepository


Класс ItemsOrdersRepository отвечает за создание таблицы items_orders в базе данных. Эта таблица связывает заказы и товары между собой (многие-ко-многим). Метод initSchema() выполняет SQL-запрос из ItemsOrdersQuery.initQuery для создания таблицы, если она еще не существует.

ItemsService


ItemService: Класс  управляющий товарами. Использует ItemsRepository для доступа к базе данных. Предоставляет методы для создания, чтения, обновления и удаления (CRUD) товаров. Дополнительно:

Обрабатывает исключения, возникающие при взаимодействии с БД.
Логирует операции и ошибки.

OrdersService

OrderService управляет заказами, используя OrderRepository. Инициализирует таблицу заказов, получает все заказы, получает товары по ID заказа, сохраняет заказ (с товарами), обновляет статус заказа и “удаляет” заказ. Обрабатывает ошибки и логирует их.

ItemsOrdersService


ItemsOrdersService отвечает за создание таблицы items_orders в базе данных. init() пытается создать эту таблицу, используя ItemsOrdersRepository. Если происходит ошибка, она логируется.

Merge request reports