Files
postgsail/tests/sql/stats.sql
2025-09-04 22:02:44 +02:00

51 lines
1.9 KiB
SQL

---------------------------------------------------------------------------
-- Listing
--
-- List current database
select current_database();
-- connect to the DB
\c signalk
-- output display format
\x on
\echo 'Validate Stats operation'
-- Assign vessel_id var
SELECT v.vessel_id as "vessel_id_kapla" FROM auth.vessels v WHERE v.owner_email = 'demo+kapla@openplotter.cloud' \gset
SELECT v.vessel_id as "vessel_id_aava" FROM auth.vessels v WHERE v.owner_email = 'demo+aava@openplotter.cloud' \gset
-- user_role
SET ROLE user_role;
\echo 'ROLE user_role current_setting'
SELECT set_config('vessel.id', :'vessel_id_kapla', false) IS NOT NULL as vessel_id;
-- Stats logbook and moorages for user
\echo 'Stats logbook and moorages for user kapla'
--SELECT api.stats_fn();
WITH tbl as (SELECT api.stats_fn() as stats)
SELECT tbl.stats->'stats_logs'->>'name' = 'kapla' AS boat_name,
(tbl.stats->'stats_logs'->>'count')::int = 1 AS logs_count,
(tbl.stats->'stats_logs'->>'max_speed')::numeric = 6.5 AS max_speed,
(tbl.stats->'stats_moorages'->>'home_ports')::int = 1 AS home_ports,
(tbl.stats->'stats_moorages'->>'unique_moorages')::numeric = 5 AS unique_moorages,
(tbl.stats->'moorages_top_countries') = '["fi"]' AS moorages_top_countries
FROM tbl;
SELECT set_config('vessel.id', :'vessel_id_aava', false) IS NOT NULL as vessel_id;
-- Stats logbook and moorages for user
\echo 'Stats logbook and moorages for user aava'
--SELECT api.stats_fn();
WITH tbl as (SELECT api.stats_fn() as stats)
SELECT tbl.stats->'stats_logs'->>'name' = 'aava' AS boat_name,
(tbl.stats->'stats_logs'->>'count')::int = 2 AS logs_count,
(tbl.stats->'stats_logs'->>'max_speed')::numeric = 9.5 AS max_speed,
(tbl.stats->'stats_moorages'->>'home_ports')::int = 1 AS home_ports,
(tbl.stats->'stats_moorages'->>'unique_moorages')::numeric = 4 AS unique_moorages,
(tbl.stats->'moorages_top_countries') = '["ee"]' AS moorages_top_countries
FROM tbl;