Skip to content

Instantly share code, notes, and snippets.

@rastermanden
Created September 4, 2017 11:38
Show Gist options
  • Save rastermanden/92fd0dcb6687bd24e0cf21189a63cdff to your computer and use it in GitHub Desktop.
Save rastermanden/92fd0dcb6687bd24e0cf21189a63cdff to your computer and use it in GitHub Desktop.
tinglysning_func.sql
DROP function IF EXISTS get_tinglysning_uuid(vejnavn text, husnummer text, etage text, doer text, supplerendebynavn text, postnummer text);
CREATE OR REPLACE FUNCTION get_tinglysning_uuid(vejnavn text, husnummer text, etage text, doer text, supplerendebynavn text, postnummer text)
RETURNS json AS
$BODY$
from urllib2 import urlopen
#from simplejson import loads
import urllib
## need to set inputarguments as global variables
global doer
global etage
if doer =='%20':
etage=' '
#plpy.info(" ========= EXTRA-module result: ===",doer)
###urlparams ###
host='https://www.tinglysning.dk/rest/soeg/{}%20{}%20{}%20{}%20{}%20{}?'.format(vejnavn, husnummer, etage, doer, postnummer, supplerendebynavn)
host=host.replace(' ', '%20')
f = (host)
f = urllib.quote_plus(f, safe="%/:=&?~#+!$,;'@()*[]")
#plpy.info(" ========= EXTRA-module result: ===",f)
try:
json = urlopen(f).read()
except:
return
### all went pretty well with basic http and start parsing response values###
#a =json.loads(json)
return json
$BODY$
LANGUAGE plpythonu VOLATILE
COST 100;
DROP function IF EXISTS get_tinglysning(uuid text, bog text);
CREATE OR REPLACE FUNCTION get_tinglysning(uuid text, bog text )
RETURNS json AS
$BODY$
from urllib2 import urlopen
#from simplejson import loads
import urllib
## need to set inputarguments as global variables
global bog
###urlparams ###
if bog == 'Tingbog':
host='https://www.tinglysning.dk/rest/ejendom/{}?'.format(uuid)
if bog == 'Andelsboligbog':
host='https://www.tinglysning.dk/rest/andelsbolig/{}?'.format(uuid)
f = (host)
f = urllib.quote_plus(f, safe="%/:=&?~#+!$,;'@()*[]")
#plpy.info(" ========= EXTRA-module result: ===",f)
try:
json = urlopen(f).read()
except:
return
### all went pretty well with basic http and start parsing response values###
return json
$BODY$
LANGUAGE plpythonu VOLATILE
COST 100;
DROP FUNCTION IF EXISTS tinglysning(vejnavn text, husnummer text, etage text, doer text, supplerendebynavn text, postnummer text) ;
CREATE OR REPLACE FUNCTION tinglysning(vejnavn text, husnummer text, etage text, doer text, supplerendebynavn text, postnummer text)
RETURNS TABLE(tinglysnings_id uuid, bog text, statuskode integer, adresse text,ejendomstype text,landsejerlavskode text, matrikelnummer text, ejendomsnummer integer, ejendomsvaerdi integer, grundvaerdi integer, vurderingsdato date, ejer_andel text,ejer text, haeftelse_id uuid, dato date, haeftelsestype text, hovedstol text,rente text, fastvariabel text,kreditorer text,url text)
AS
$$
DECLARE
has_id uuid := NULL;
has_ejd integer:= NULL;
bog text:= NULL;
jsonresp json:=NULL;
has_ejd_resp json:=NULL;
BEGIN
--has_id= (SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), replace($3, ' ', '%20'),replace($4, ' ', '%20'),replace($5, ' ', '%20'),replace($6, ' ', '%20'))::json->'items'->0->>'uuid');
jsonresp=(SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), replace($3, ' ', '%20'),replace($4, ' ', '%20'),replace($5, ' ', '%20'),replace($6, ' ', '%20'))::json);
has_id=(select jsonresp->'items'->0->>'uuid');
bog=(select jsonresp->'items'->0->>'bog');
---Statuskode 8: for mange foresprøgsler skal håndteres
--RAISE NOTICE 'has_i:%', has_id;
--RAISE NOTICE 'bog % ', ejd_type;
--RAISE NOTICE 'Calling cs_create_job(%)', jsonresp;
IF has_id IS NULL THEN
--RETURN QUERY SELECT '','','';
RETURN QUERY SELECT * FROM (SELECT NULL::uuid, NULL::text,NULL::integer,NULL::text,NULL::text,NULL::text,NULL::text,NULL::integer,NULL::integer,NULL::integer,NULL::date,NULL::text,NULL::text,NULL::uuid,NULL::date,NULL::text,NULL::text,NULL::text,NULL::text,NULL::text,NULL::text) foo;
RETURN;
END IF;
--has_ejd= (SELECT ((SELECT get_tinglysning(has_id::text,bog))->>'statuskode')::integer as statuskode);
has_ejd_resp= (SELECT get_tinglysning(has_id::text,bog));
has_ejd =((select has_ejd_resp->>'statuskode')::integer);
RAISE NOTICE 'resp % ', has_ejd_resp;
RAISE NOTICE 'has ejendom % ', has_ejd;
IF has_ejd=1 THEN
RETURN QUERY SELECT * FROM (SELECT NULL::uuid,1::integer,bog,'Ejendom kan ikke findes i tinglysning'::text,NULL::text,NULL::text,NULL::text,NULL::integer,NULL::integer,NULL::integer,NULL::date,NULL::text,NULL::text,NULL::uuid,NULL::date,NULL::text,NULL::text,NULL::text,NULL::text,NULL::text,'IKKE FUNDET'::text) foo;
RETURN;
END IF;
--has_id= (SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), $3,$4,$5)::json->'items'->0->>'uuid');
--RAISE EXCEPTION 'Exception notice: %', has_id;
--INSERT INTO has_id (SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), $3,$4,$5)::json->'items'->0->>'uuid');
--IF (SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), $3,$4,$5)::json->'items'->0->>'uuid') IS NULL THEN
-- RETURN QUERY SELECT NULL::uuid,NULL::integer,NULL::text,NULL::text,NULL::text,NULL::text,NULL::integer,NULL::integer,NULL::integer,NULL::date,NULL::text,NULL::text,NULL::uuid,NULL::date,NULL::text,NULL::text,NULL::text,NULL::text,NULL::text;
--END IF;
--Hvad skal retuneres hvis andelsbolig og ingen hæftelser m.m. ????
RETURN QUERY
WITH res AS (
--SELECT get_tinglysning((SELECT get_tinglysning_uuid(replace($1, ' ', '%20'), replace($2, ' ', '%20'), $3,$4,$5)::json->'items'->0->>'uuid')) as json
SELECT has_ejd_resp as json
)
SELECT
(res.json->>'uuid')::uuid as tinglysnings_id,
bog,
(res.json->>'statuskode')::integer as statuskode,
(res.json->>'adresse') as adresse,
res.json->>'ejendomstype' as ejendomstype,
-- json_array_elements(res.json->'matrikler')::json->>'landsejerlavkode' as landsejerlavskode,
(json_array_elements(res.json->'matrikler')::json->>'landsejerlavkode') as landsejerlavkode,
--json_array_elements(res.json->'matrikler')::json->>'matrikelnummer' as matrikelnummer,
(json_array_elements(res.json->'matrikler')::json->>'matrikelnummer') ,
(res.json->'vurdering'->>'ejendomsnummer')::integer as ejendomsnummer,
(res.json->'vurdering'->>'ejendomsvaerdi')::integer as ejendomsvaerdi,
(res.json->'vurdering'->>'grundvaerdi')::integer as grundvaerdi,
(res.json->'vurdering'->>'vurderingsdato')::date as vurderingsdato,
-- json_array_elements(res.json->'ejere')::json->>'andel' as ejer_andel,
CASE
WHEN (res.json->'haeftelser')::text ='null' THEN NULL
ELSE (json_array_elements(res.json->'haeftelser')::json->>'ejer_andel')
END as ejer_andel,
--json_array_elements(res.json->'ejere')::json->>'navn' as ejer,
CASE
WHEN (res.json->'haeftelser')::text ='null' THEN NULL
ELSE (json_array_elements(res.json->'haeftelser')::json->>'ejer')
END as ejer,
CASE
WHEN (res.json->'haeftelser')::text ='null' THEN NULL
ELSE (json_array_elements(res.json->'haeftelser')::json->>'uuid')::uuid
END as haeftelse_id,
CASE
WHEN (res.json->'haeftelser')::text ='null' THEN NULL
ELSE to_date(json_array_elements(res.json->'haeftelser')::json->>'alias','DD.MM.YYYY')
END as dato,
CASE
WHEN (res.json->'haeftelser')::text ='null' THEN NULL
ELSE json_array_elements(res.json->'haeftelser')::json->>'haeftelsestype'
END as haeftelsestype,
CASE
WHEN (res.json->'haeftelser')::text ='null' THEN NULL
ELSE json_array_elements(res.json->'haeftelser')::json->>'hovedstol'
END as hovedstol,
CASE
WHEN (res.json->'haeftelser')::text ='null' THEN NULL
ELSE json_array_elements(res.json->'haeftelser')::json->>'rente'
END as rente,
CASE
WHEN (res.json->'haeftelser')::text ='null' THEN NULL
ELSE json_array_elements(res.json->'haeftelser')::json->>'fastvariabel'
END as fastvariabel,
CASE
WHEN (res.json->'haeftelser')::text ='null' THEN NULL
ELSE json_array_elements(res.json->'haeftelser')::json->>'kreditorer'
END as kreditorer,
'https://www.tinglysning.dk/m/#/ejendomme/'|| has_id::text as url
FROM res;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment