Telegram Group & Telegram Channel
🧪 Зачем Java-разработчику тестировать логику в SQL?

Привет! Сегодня покажу вам полезный трюк для тех, кто пишет сложные запросы в PostgreSQL (или любом другом SQL-движке) и хочет их тестировать ещё до интеграции в Java-приложение.

Если у тебя в проекте сложная логика в JOIN, CASE, оконных функциях или CTE — протестируй это на стороне базы, как обычную функцию.

🔹 Создаём функцию в PostgreSQL:

CREATE OR REPLACE FUNCTION test_discount(user_id INT)
RETURNS NUMERIC AS $$
BEGIN
RETURN (
SELECT
CASE
WHEN u.vip = true THEN 0.2
ELSE 0.05
END
FROM users u WHERE u.id = user_id
);
END;
$$ LANGUAGE plpgsql;


🔹 Проверяем прямо в базе:

SELECT test_discount(101); -- вернёт 0.2 или 0.05


Это удобно, когда:
- Ты хочешь протестировать ветки логики без запуска всего приложения;
- У тебя CI/CD запускает SQL-тесты отдельно (через pgTAP, например);
- Ты хочешь быстро показать запрос аналитику или тимлиду без Java-контекста.

💡 Лайфхак: если ты используешь Liquibase/Flyway — можно держать такие функции прямо в changelog'ах как test-only objects, не влияя на runtime-приложение.

Попробуй — экономит массу времени на ревью и отладке запросов!

@javatg



tg-me.com/javatg/1806
Create:
Last Update:

🧪 Зачем Java-разработчику тестировать логику в SQL?

Привет! Сегодня покажу вам полезный трюк для тех, кто пишет сложные запросы в PostgreSQL (или любом другом SQL-движке) и хочет их тестировать ещё до интеграции в Java-приложение.

Если у тебя в проекте сложная логика в JOIN, CASE, оконных функциях или CTE — протестируй это на стороне базы, как обычную функцию.

🔹 Создаём функцию в PostgreSQL:


CREATE OR REPLACE FUNCTION test_discount(user_id INT)
RETURNS NUMERIC AS $$
BEGIN
RETURN (
SELECT
CASE
WHEN u.vip = true THEN 0.2
ELSE 0.05
END
FROM users u WHERE u.id = user_id
);
END;
$$ LANGUAGE plpgsql;


🔹 Проверяем прямо в базе:

SELECT test_discount(101); -- вернёт 0.2 или 0.05


Это удобно, когда:
- Ты хочешь протестировать ветки логики без запуска всего приложения;
- У тебя CI/CD запускает SQL-тесты отдельно (через pgTAP, например);
- Ты хочешь быстро показать запрос аналитику или тимлиду без Java-контекста.

💡 Лайфхак: если ты используешь Liquibase/Flyway — можно держать такие функции прямо в changelog'ах как test-only objects, не влияя на runtime-приложение.

Попробуй — экономит массу времени на ревью и отладке запросов!

@javatg

BY Java


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/javatg/1806

View MORE
Open in Telegram


Java Telegram | DID YOU KNOW?

Date: |

That strategy is the acquisition of a value-priced company by a growth company. Using the growth company's higher-priced stock for the acquisition can produce outsized revenue and earnings growth. Even better is the use of cash, particularly in a growth period when financial aggressiveness is accepted and even positively viewed.he key public rationale behind this strategy is synergy - the 1+1=3 view. In many cases, synergy does occur and is valuable. However, in other cases, particularly as the strategy gains popularity, it doesn't. Joining two different organizations, workforces and cultures is a challenge. Simply putting two separate organizations together necessarily creates disruptions and conflicts that can undermine both operations.

A project of our size needs at least a few hundred million dollars per year to keep going,” Mr. Durov wrote in his public channel on Telegram late last year. “While doing that, we will remain independent and stay true to our values, redefining how a tech company should operate.

Java from kr


Telegram Java
FROM USA