adapt requete for not use source table infraction_rnn

This commit is contained in:
Colas Geier 2025-10-09 12:05:36 +02:00
parent 9ce2809804
commit ccf224418b

View File

@ -7,74 +7,76 @@ sql = '''
DROP VIEW IF EXISTS police.v_infraction_rnn; DROP VIEW IF EXISTS police.v_infraction_rnn;
CREATE VIEW police.v_infraction_rnn AS CREATE VIEW police.v_infraction_rnn AS
WITH photos as ( WITH photos AS (
SELECT SELECT infraction_rnn.json_data ->> '__Submissions-id'::text AS "__Submissions-id",
json_data->>'__Submissions-id'::text "__Submissions-id", json_agg((('https://odk2.cen-isere.fr/v1/projects/6/forms/infraction_rnn/submissions/'::text || (infraction_rnn.json_data ->> '__Submissions-id'::text)) || '/attachments/'::text) || (infraction_rnn.json_data ->> 'photos'::text)) AS photos
json_agg('https://odk2.cen-isere.fr/v1/projects/6/forms/infraction_rnn/submissions/'||(json_data->>'__Submissions-id'::text)||'/attachments/'||(json_data->>'photos')::text) photos FROM (
FROM police.infraction_rnn select row_to_json(t.*) json_data
WHERE tablename = 'photos_repeat' from police.infraction_rnn_photos_repeat_data t
group by json_data->>'__Submissions-id'::text ) infraction_rnn
), strip_infra as ( GROUP BY (infraction_rnn.json_data ->> '__Submissions-id'::text)
SELECT ), strip_infra AS (
inf.json_data->>'__Submissions-id' "__Submissions-id", SELECT inf_1.json_data ->> '__Submissions-id'::text AS "__Submissions-id",
json_data->>'__id' "__id", inf_1.json_data ->> '__id'::text AS __id,
json_strip_nulls(inf.json_data) json_data json_strip_nulls(inf_1.json_data) AS json_data
FROM police.infraction_rnn inf FROM (
WHERE inf.tablename = 'multiple_infract' select row_to_json(t.*) json_data
), key_infra as ( from police.infraction_rnn_multiple_infract_data t
select ) inf_1
json_data->>'__Submissions-id' "__Submissions-id", ), key_infra AS (
json_data->>'__id' "__id", SELECT strip_infra.json_data ->> '__Submissions-id'::text AS "__Submissions-id",
json_object_keys(json_data::json) data_keys strip_infra.json_data ->> '__id'::text AS __id,
from strip_infra json_object_keys(strip_infra.json_data) AS data_keys
), key_infra_agg as ( FROM strip_infra
select ), key_infra_agg AS (
"__Submissions-id","__id", array_agg(data_keys) data_keys SELECT key_infra."__Submissions-id",
from key_infra key_infra.__id,
group by 2,1 array_agg(key_infra.data_keys) AS data_keys
FROM key_infra
GROUP BY key_infra.__id, key_infra."__Submissions-id"
) )
SELECT SELECT inf.json_data ->> '__id'::text AS id_infraction,
inf.json_data->>'__id'::text id_infraction, split_part(sub.data_id, ':'::text, 2)::uuid AS id_submission,
split_part(sub.data_id,':',2)::uuid id_submission, sub."submitterName" AS digitiser,
"submitterName" digitiser, sub.catego_controle,
catego_controle, sub.catego_sensibil,
catego_sensibil, sub.autre_catego_sensi,
autre_catego_sensi, sub.autre_type_sanct,
autre_type_sanct, inf.json_data ->> 'catego_infract'::text AS catego_infract,
inf.json_data->>'catego_infract'::text catego_infract, inf.json_data ->> key_infra_agg.data_keys[1] AS nature_infra,
inf.json_data->>key_infra_agg.data_keys[1] nature_infra, CASE
case when SPLIT_PART(key_infra_agg.data_keys[3],'_',1) = 'natinf' WHEN split_part(key_infra_agg.data_keys[3], '_'::text, 1) = 'natinf'::text THEN inf.json_data ->> key_infra_agg.data_keys[2]
then inf.json_data->>key_infra_agg.data_keys[2] ELSE NULL::text
else null END AS code_catego,
end code_catego, CASE
case when SPLIT_PART(key_infra_agg.data_keys[3],'_',1) = 'natinf' WHEN split_part(key_infra_agg.data_keys[3], '_'::text, 1) = 'natinf'::text THEN inf.json_data ->> key_infra_agg.data_keys[3]
then inf.json_data->>key_infra_agg.data_keys[3] ELSE inf.json_data ->> key_infra_agg.data_keys[2]
else inf.json_data->>key_infra_agg.data_keys[2] END AS code_infra,
end code_infra, inf.json_data ->> 'descrpt_infract'::text AS descrpt_infract,
inf.json_data->>'descrpt_infract'::text descrpt_infract, sub."Commentaire_remarque_nombre_de_tentes",
"Commentaire_remarque_nombre_de_tentes", sub."Conformit_du_contr_le",
"Conformit_du_contr_le", sub.day AS date,
"day" "date", sub.heure,
"heure", sub.infract_nb,
infract_nb, sub.nat_operation,
nat_operation, sub.nature_pers,
nature_pers, sub.nb_pers_control,
nb_pers_control, sub.nb_pers_sensibil,
nb_pers_sensibil, sub.nb_verb,
nb_verb, sub.nom_agent,
nom_agent, sub.type_sanct,
type_sanct, ph.photos,
ph.photos, sub."submissionDate" AS date_saisie,
"submissionDate" date_saisie, sub."updatedAt" AS date_maj,
"updatedAt" date_maj, st_force2d(st_geomfromgeojson(replace(COALESCE(sub.geom, sub.point_carte), '\\'::text, ''::text)))::geometry(Geometry,4326) AS geom
st_force2d(st_geomfromgeojson(replace(COALESCE(geom,point_carte),'\\','')))::geometry(geometry, 4326) AS geom FROM police.infraction_rnn_submissions_data sub
FROM police.infraction_rnn_submissions_data AS sub JOIN strip_infra inf ON sub.data_id = inf."__Submissions-id"
JOIN strip_infra inf ON sub.data_id::text = inf."__Submissions-id"::text JOIN key_infra_agg ON inf.__id = key_infra_agg.__id
join key_infra_agg on inf.__id = key_infra_agg.__id JOIN photos ph ON sub.data_id = ph."__Submissions-id"
JOIN photos ph ON sub.data_id::text = ph."__Submissions-id"::text ORDER BY (split_part(sub.data_id, ':'::text, 2)::uuid), (inf.json_data ->> '__id'::text)
ORDER BY 2,1 ; ;
GRANT SELECT ON TABLE police.infraction_rnn TO grp_police; GRANT SELECT ON TABLE police.v_infraction_rnn TO grp_police;
''' '''
with con_odk.begin() as cnx: with con_odk.begin() as cnx: