From 2008620c8d321d187093bf0e593dd76edaa91e5f Mon Sep 17 00:00:00 2001 From: Timofey Malinin Date: Mon, 2 Oct 2023 13:02:15 +0000 Subject: [PATCH] Update create_procedures.py --- .../management/commands/create_procedures.py | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/service/management/commands/create_procedures.py b/service/management/commands/create_procedures.py index 3669c5e..3449e59 100644 --- a/service/management/commands/create_procedures.py +++ b/service/management/commands/create_procedures.py @@ -1,19 +1,17 @@ from django.core.management.base import BaseCommand from service.utils import run_sql_command, log_to_telegram -CMD_PIVOT_DIST = """DROP VIEW IF EXISTS points_with_dist; -CREATE OR REPLACE VIEW points_with_dist AS -SELECT status, category, age_day, fact, area_id, district_id, address, name, prediction_first, prediction_current, doors, flat_cnt, rival_post_cnt, rival_pvz_cnt, target_post_cnt, flats_cnt, tc_cnt, culture_cnt, mfc_cnt, public_stop_cnt, supermarket_cnt, target_dist, metro_dist, geometry FROM service_placementpoint; -CREATE OR REPLACE PROCEDURE pivot_dist() +CMD_PIVOT_DIST = """CREATE OR REPLACE VIEW compact_placementpoint AS +SELECT id, status, category, age_day, fact, area_id, district_id, prediction_first, prediction_current, doors, flat_cnt, rival_post_cnt, rival_pvz_cnt, target_post_cnt, flats_cnt, tc_cnt, culture_cnt, mfc_cnt, public_stop_cnt, supermarket_cnt, target_dist, metro_dist, geometry FROM service_placementpoint; +CREATE OR REPLACE procedure pivot_dist() --RETURNS SET OF record AS $BODY$ DECLARE columnNames TEXT; BEGIN DROP VIEW IF EXISTS points_with_dist; -SELECT 'placement_point bigint, ' || string_agg(c, ', ') FROM (SELECT distinct pvz_postamates_group_id, 'd' || pvz_postamates_group_id || ' double precision' as c from service_placementpointpvzdistance order by 1) as asd +SELECT 'placement_point_id bigint, ' || string_agg(c, ', ') FROM (SELECT distinct pvz_postamates_group_id, 'd' || pvz_postamates_group_id || ' double precision' as c from service_placementpointpvzdistance order by 1) as asd INTO columnNames; -EXECUTE format('CREATE OR REPLACE VIEW points_with_dist AS SELECT - +EXECUTE format('CREATE OR REPLACE VIEW points_with_dist AS SELECT * FROM CROSSTAB( $$ SELECT placement_point_id, pvz_postamates_group_id, dist @@ -21,19 +19,21 @@ FROM CROSSTAB( ORDER BY 1, 2 $$ ) AS ct(%s) -LEFT JOIN service_placementpoint ON placement_point_id=id' +LEFT JOIN compact_placementpoint ON placement_point_id=id' ,columnNames); END; $BODY$ LANGUAGE plpgsql; """ -CMD_PIVOT_DIST_PRE = """CREATE OR REPLACE procedure prepivot_dist() +CMD_PIVOT_DIST_PRE = """CREATE OR REPLACE VIEW compact_preplacementpoint AS +SELECT id, status, category, age_day, fact, area_id, district_id, prediction_first, prediction_current, doors, flat_cnt, rival_post_cnt, rival_pvz_cnt, target_post_cnt, flats_cnt, tc_cnt, culture_cnt, mfc_cnt, public_stop_cnt, supermarket_cnt, target_dist, metro_dist, geometry FROM service_preplacementpoint; +CREATE OR REPLACE procedure prepivot_dist() AS $BODY$ DECLARE columnNames TEXT; BEGIN DROP VIEW IF EXISTS prepoints_with_dist; -SELECT 'placement_point_id bigint, ' || string_agg(c, ', ') FROM (SELECT distinct pvz_postamates_group_id, 'd' || pvz_postamates_group_id || ' double precision' as c from service_preplacementpointpvzdistance order by 1) as asd +SELECT 'preplacement_point_id bigint, ' || string_agg(c, ', ') FROM (SELECT distinct pvz_postamates_group_id, 'd' || pvz_postamates_group_id || ' double precision' as c from service_preplacementpointpvzdistance order by 1) as asd INTO columnNames; EXECUTE format('CREATE OR REPLACE VIEW prepoints_with_dist AS SELECT * FROM CROSSTAB( @@ -43,11 +43,12 @@ FROM CROSSTAB( ORDER BY 1, 2 $$ ) AS ct(%s) -LEFT JOIN service_preplacementpoint ON placement_point_id=id' +LEFT JOIN compact_preplacementpoint ON preplacement_point_id=id' ,columnNames); END; $BODY$ -LANGUAGE plpgsql;""" +LANGUAGE plpgsql; +""" class Command(BaseCommand): help = 'Create procedures'