Stored Transformation
Stored transformation detail
Inspect version history, edit inputs, and save a new version without overwriting prior records.
def v($k): .[$k].value // null;
def trim:
gsub("^\\s+|\\s+$"; "");
def clean_text:
tostring | gsub("\\s+"; " ") | trim;
def gql_line($key; $value):
if $value == null or $value == "" then "" else " " + $key + " : " + ($value | @json) + "\n" end;
def province_from_postal_code($cp):
if $cp | startswith("28") then "Madrid" else null end;
def ac_from_postal_code($cp):
if $cp | startswith("28") then "Comunidad de Madrid" else null end;
def parsed_address:
(v("address")) as $a
| if ($a == null) or (($a | type) != "string") or (($a | clean_text) == "") then
{
streetAddress: "Dirección no disponible",
postalCode: "28232",
municipality: "Las Rozas",
province: "Madrid",
autonomousCommunity: "Comunidad de Madrid",
country: "España"
}
else
($a | clean_text | gsub("\\.$"; "")) as $raw
| if ($raw | test("\\b\\d{5}\\b")) then
($raw | capture("^(?<streetAddress>.*?)[,.;]?\\s*(?<postalCode>\\d{5})\\s+(?<municipality>[^,.;]+)")) as $m
| {
streetAddress: ($m.streetAddress | clean_text | gsub("[,.;]$"; "")),
postalCode: $m.postalCode,
municipality: ($m.municipality | clean_text),
province: province_from_postal_code($m.postalCode),
autonomousCommunity: ac_from_postal_code($m.postalCode),
country: "España"
}
else
{
streetAddress: $raw,
postalCode: "28232",
municipality: "Las Rozas",
province: "Madrid",
autonomousCommunity: "Comunidad de Madrid",
country: "España"
}
end
end;
def parsed_coords:
(.location.value.coordinates // null) as $c
| if ($c | type) == "array" and ($c | length) >= 2 then
{long: $c[0], lat: $c[1]}
else
{}
end;
(v("description")) as $desc
| (.id // null) as $externalId
| (parsed_address) as $addr
| (parsed_coords) as $coords
| ((($addr // {}) + $coords)) as $loc
| {
query:
"mutation update_hotel {\n" +
" updateHotel(\n" +
" dti: \"ROZAS_DE_MADRID_LAS\"\n" +
" input: {\n" +
" object: {\n" +
" externalId: " + ($externalId | @json) + "\n" +
" name: {\n" +
" value: " + (($desc // "Hotel PID") | @json) + "\n" +
" lang: \"es\"\n" +
" }\n" +
" hasDescription: {\n" +
" object: {\n" +
" shortDescription: {\n" +
" value: " + (($desc // "Hotel PID") | @json) + "\n" +
" lang: \"es\"\n" +
" }\n" +
" }\n" +
" }\n" +
" hasLocation: {\n" +
" object: {\n" +
(gql_line("streetAddress"; $loc.streetAddress)) +
(gql_line("postalCode"; $loc.postalCode)) +
(gql_line("municipality"; $loc.municipality)) +
(gql_line("province"; $loc.province)) +
(gql_line("autonomousCommunity"; $loc.autonomousCommunity)) +
(gql_line("country"; $loc.country)) +
(gql_line("long"; $loc.long)) +
(gql_line("lat"; $loc.lat)) +
" }\n" +
" }\n" +
" }\n" +
" }\n" +
" ) {\n" +
" uri\n" +
" dtiName\n" +
" name {\n" +
" value\n" +
" lang\n" +
" }\n" +
" }\n" +
"}",
operationName: "update_hotel"
}
{
"operationName": "update_hotel",
"query": "mutation update_hotel {...}"
}