tg-bot-golang
Форк от ella/tg-bot-golang
86 строк · 6.3 Кб
1-- +goose Up
2-- +goose StatementBegin
3DO
4$$
5DECLARE
6testUserId integer;
7recs RECORD;
8BEGIN
9-- Вставка тестового пользователя.
10INSERT INTO users
11(tg_id, name, currency, limits)
12VALUES (1234567890, 'ellavs', 'RUB', 50000)
13ON CONFLICT (tg_id) DO NOTHING;
14
15SELECT id FROM users WHERE tg_id = 1234567890 INTO testUserId;
16
17-- Вставка тестовых категорий пользователя.
18INSERT INTO usercategories (user_id, name)
19VALUES (testUserId, 'Бензин'),
20(testUserId, 'Продукты'),
21(testUserId, 'Здоровье'),
22(testUserId, 'Обувь'),
23(testUserId, 'Интернет')
24ON CONFLICT (user_id, lower(name)) DO NOTHING;
25
26-- Вставка тестовых расходов пользователя.
27FOR recs IN
28SELECT id, name
29FROM usercategories
30WHERE user_id = testUserId
31LOOP
32CASE recs.name
33WHEN 'Бензин' THEN INSERT INTO usermoneytransactions (user_id, category_id, period, sum)
34VALUES (testUserId, recs.id, CURRENT_TIMESTAMP, 50000),
35(testUserId, recs.id, CURRENT_TIMESTAMP - interval '20 hour', 150000),
36(testUserId, recs.id, CURRENT_TIMESTAMP - interval '2 days', 55000),
37(testUserId, recs.id, CURRENT_TIMESTAMP - interval '10 days', 45000),
38(testUserId, recs.id, CURRENT_TIMESTAMP - interval '1 month 1 days', 135000),
39-- Тестовая запись с периодом, выходящим за пределы последнего года
40(testUserId, recs.id, CURRENT_TIMESTAMP - interval '2 years', 60000)
41ON CONFLICT DO NOTHING;
42WHEN 'Продукты' THEN INSERT INTO usermoneytransactions (user_id, category_id, period, sum)
43VALUES (testUserId, recs.id, CURRENT_TIMESTAMP - interval '2 hour', 253555),
44(testUserId, recs.id, CURRENT_TIMESTAMP - interval '32 hour', 85600),
45(testUserId, recs.id, CURRENT_TIMESTAMP - interval '1 days', 74500),
46(testUserId, recs.id, CURRENT_TIMESTAMP - interval '32 days', 95230),
47(testUserId, recs.id, CURRENT_TIMESTAMP - interval '36 days', 345000),
48(testUserId, recs.id, CURRENT_TIMESTAMP - interval '3 month', 156000),
49-- Тестовая запись с периодом, выходящим за пределы последнего года
50(testUserId, recs.id, CURRENT_TIMESTAMP - interval '2 years', 85000)
51ON CONFLICT DO NOTHING;
52WHEN 'Здоровье' THEN INSERT INTO usermoneytransactions (user_id, category_id, period, sum)
53VALUES (testUserId, recs.id, CURRENT_TIMESTAMP - interval '1 days', 1562000),
54(testUserId, recs.id, CURRENT_TIMESTAMP - interval '33 days', 860000),
55(testUserId, recs.id, CURRENT_TIMESTAMP - interval '37 days', 530000),
56(testUserId, recs.id, CURRENT_TIMESTAMP - interval '2 month', 2300000),
57-- Тестовая запись с периодом, выходящим за пределы последнего года
58(testUserId, recs.id, CURRENT_TIMESTAMP - interval '2 years', 1500000)
59ON CONFLICT DO NOTHING;
60WHEN 'Обувь' THEN INSERT INTO usermoneytransactions (user_id, category_id, period, sum)
61VALUES (testUserId, recs.id, CURRENT_TIMESTAMP - interval '3 days', 890000),
62(testUserId, recs.id, CURRENT_TIMESTAMP - interval '38 days', 260000),
63(testUserId, recs.id, CURRENT_TIMESTAMP - interval '5 month', 1300000),
64-- Тестовая запись с периодом, выходящим за пределы последнего года
65(testUserId, recs.id, CURRENT_TIMESTAMP - interval '2 years', 120000)
66ON CONFLICT DO NOTHING;
67WHEN 'Интернет' THEN INSERT INTO usermoneytransactions (user_id, category_id, period, sum)
68VALUES (testUserId, recs.id, CURRENT_TIMESTAMP - interval '20 days', 96000),
69(testUserId, recs.id, CURRENT_TIMESTAMP - interval '2 month', 96000),
70(testUserId, recs.id, CURRENT_TIMESTAMP - interval '3 month', 96000),
71(testUserId, recs.id, CURRENT_TIMESTAMP - interval '4 month', 95000),
72(testUserId, recs.id, CURRENT_TIMESTAMP - interval '5 month', 95000),
73-- Тестовая запись с периодом, выходящим за пределы последнего года
74(testUserId, recs.id, CURRENT_TIMESTAMP - interval '2 years', 90000)
75ON CONFLICT DO NOTHING;
76END CASE;
77END LOOP;
78END
79$$;
80-- +goose StatementEnd
81
82-- +goose Down
83-- +goose StatementBegin
84-- Удаление остальных данных произойдет каскадно.
85DELETE FROM users WHERE tg_id = 1234567890
86-- +goose StatementEnd