-
Notifications
You must be signed in to change notification settings - Fork 2
Repository
Описание:
Репозиторий для работы с банковскими продуктами. Использует JdbcTemplate вместо JPA.
Методы:
public List<Product> findAllProducts();
// Получает все банковские продукты из базы данных.SQL-запрос:
SELECT * FROM PRODUCTS;📌 Примечание:
Доступ к продуктам реализован через чистый SQL, что даёт гибкость, но может быть оптимизировано кешированием.
Описание:
Репозиторий для работы с наборами правил (RuleSet). Использует Spring Data JPA.
Методы:
Optional<RuleSet> findByProductId(UUID productId);
// Получает набор правил по ID продукта.📌 Примечание:
Использование JPA упрощает работу с RuleSet, позволяя Spring управлять SQL-запросами.
Описание:
Репозиторий для работы со статистикой срабатывания правил (RuleStat). Использует Spring Data JPA.
Методы:
Optional<RuleStat> findByRuleId(Long ruleId);
// Получает статистику срабатывания по ID правила.
void deleteByRuleId(Long ruleId);
// Удаляет статистику срабатывания по ID правила.📌 Примечание:
Этот репозиторий помогает отслеживать частоту выполнения динамических правил.
Описание:
Репозиторий для работы с банковскими транзакциями. Использует JdbcTemplate.
Методы:
public List<Transaction> findTransactionsByUserId(String userId);
// Получает список транзакций пользователя.
public boolean userHasProduct(String userId, String productType);
// Проверяет, использует ли пользователь продукт.
public double getTotalDeposits(String userId, String productType);
// Считает сумму пополнений пользователя по указанному типу продукта.
public double getTotalExpenses(String userId, String productType);
// Считает сумму трат пользователя по указанному типу продукта.SQL-запрос:
SELECT t.id, t.amount, t.type, t.date,
u.id AS user_id, u.name AS user_name,
p.id AS product_id, p.name AS product_name, p.type AS product_type, p.description AS product_description
FROM TRANSACTIONS t
JOIN USERS u ON t.user_id = u.id
JOIN PRODUCTS p ON t.product_id = p.id
WHERE t.user_id = ?;📌 Примечание:
Этот репозиторий ключевой для выполнения правил рекомендаций, так как агрегирует транзакции пользователей.
Описание:
Репозиторий для работы с пользователями. Использует JdbcTemplate.
Методы:
public List<User> findAllUsers();
// Получает всех пользователей.
public Optional<User> findUserByName(String username);
// Ищет пользователя по имени (регистр-независимый поиск).SQL-запрос:
SELECT * FROM USERS WHERE LOWER(username) = LOWER(?);📌 Примечание:
Используется, в частности, для поиска пользователей в Telegram-боте.