A resources/migrations/20220922130000-add-status-columns.down.sql => resources/migrations/20220922130000-add-status-columns.down.sql +15 -0
@@ 0,0 1,15 @@
+ALTER TABLE template.openbareRuimte DROP COLUMN status, DROP COLUMN actief;
+--;;
+ALTER TABLE template.nummeraanduiding DROP COLUMN status, DROP COLUMN actief;
+--;;
+ALTER TABLE template.pand DROP COLUMN status, DROP COLUMN actief;
+--;;
+ALTER TABLE template.standplaats DROP COLUMN status, DROP COLUMN actief;
+--;;
+ALTER TABLE template.ligplaats DROP COLUMN status, DROP COLUMN actief;
+--;;
+ALTER TABLE template.verblijfsobject DROP COLUMN status, DROP COLUMN actief;
+--;;
+ALTER TABLE template.woonplaats DROP COLUMN status, DROP COLUMN actief;
+--;;
+DROP TYPE status;
A resources/migrations/20220922130000-add-status-columns.up.sql => resources/migrations/20220922130000-add-status-columns.up.sql +72 -0
@@ 0,0 1,72 @@
+CREATE TYPE status AS ENUM (
+ 'Naamgeving uitgegeven',
+ 'Naamgeving ingetrokken',
+
+ 'Bouwvergunning verleend',
+ 'Niet gerealiseerd pand',
+ 'Bouw gestart',
+ 'Pand in gebruik (niet ingemeten)',
+ 'Pand in gebruik',
+ 'Verbouwing pand',
+ 'Sloopvergunning verleend',
+ 'Pand gesloopt',
+ 'Pand buiten gebruik',
+ 'Pand ten onrechte opgevoerd',
+
+ 'Plaats aangewezen',
+ 'Plaats ingetrokken',
+
+ 'Verblijfsobject gevormd',
+ 'Niet gerealiseerd verblijfsobject',
+ 'Verblijfsobject in gebruik (niet ingemeten)',
+ 'Verblijfsobject in gebruik',
+ 'Verbouwing verblijfsobject',
+ 'Verblijfsobject ingetrokken',
+ 'Verblijfsobject buiten gebruik',
+ 'Verblijfsobject ten onrechte opgevoerd',
+
+ 'Woonplaats aangewezen',
+ 'Woonplaats ingetrokken'
+);
+--;;
+
+ALTER TABLE template.openbareRuimte ADD COLUMN status status, ADD COLUMN actief BOOLEAN;
+--;;
+ALTER TABLE template.nummeraanduiding ADD COLUMN status status, ADD COLUMN actief BOOLEAN;
+--;;
+ALTER TABLE template.pand ADD COLUMN status status, ADD COLUMN actief BOOLEAN;
+--;;
+ALTER TABLE template.standplaats ADD COLUMN status status, ADD COLUMN actief BOOLEAN;
+--;;
+ALTER TABLE template.ligplaats ADD COLUMN status status, ADD COLUMN actief BOOLEAN;
+--;;
+ALTER TABLE template.verblijfsobject ADD COLUMN status status, ADD COLUMN actief BOOLEAN;
+--;;
+ALTER TABLE template.woonplaats ADD COLUMN status status, ADD COLUMN actief BOOLEAN;
+--;;
+
+SET SCHEMA 'template';
+--;;
+
+DROP INDEX verblijfsobject_nummeraanduiding_idx;
+--;;
+CREATE INDEX verblijfsobject_nummeraanduiding_idx ON verblijfsobject (nummeraanduiding_id, actief, einddatum);
+--;;
+DROP INDEX ligplaats_nummeraanduiding_idx;
+--;;
+CREATE INDEX ligplaats_nummeraanduiding_idx ON ligplaats (nummeraanduiding_id, actief, einddatum);
+--;;
+DROP INDEX standplaats_nummeraanduiding_idx;
+--;;
+CREATE INDEX standplaats_nummeraanduiding_idx ON standplaats (nummeraanduiding_id, actief, einddatum);
+--;;
+DROP INDEX woonplaats_idx;
+--;;
+CREATE INDEX woonplaats_idx ON woonplaats (id, actief, einddatum);
+--;;
+DROP INDEX openbareruimte_idx;
+--;;
+CREATE INDEX openbareruimte_idx ON openbareruimte (id, actief, einddatum);
+
+--;;
+SET SCHEMA 'public';
M src/straatnaam/data.clj => src/straatnaam/data.clj +4 -2
@@ 36,11 36,13 @@
(str "DROP VIEW IF EXISTS public.verblijfsobject")
(str "CREATE VIEW public.verblijfsobject AS
- SELECT * FROM " sn ".verblijfsobject WHERE einddatum IS NULL")
+ SELECT * FROM " sn ".verblijfsobject
+ WHERE actief AND einddatum IS NULL")
(str "DROP VIEW IF EXISTS public.pand")
(str "CREATE VIEW public.pand AS
- SELECT * FROM " sn ".pand WHERE einddatum IS NULL")
+ SELECT * FROM " sn ".pand
+ WHERE actief AND einddatum IS NULL")
(str "DROP VIEW IF EXISTS public.verblijfsobject_pand")
(str "CREATE VIEW public.verblijfsobject_pand AS
M src/straatnaam/lvbag.clj => src/straatnaam/lvbag.clj +28 -4
@@ 38,13 38,33 @@
:else
{tag (reduce merge (map xml-seq->map content))}))
+(def status-inactief
+ #{"Naamgeving ingetrokken"
+
+ "Niet gerealiseerd pand"
+ "Pand gesloopt"
+ "Pand ten onrechte opgevoerd"
+
+ "Plaats ingetrokken"
+
+ "Niet gerealiseerd verblijfsobject"
+ "Verblijfsobject ingetrokken"
+ "Verblijfsobject ten onrechte opgevoerd"
+
+ "Woonplaats ingetrokken"})
+
+(def status-actief (complement status-inactief))
+
(defn parse-base
- [{:keys [identificatie]
+ [{:keys [identificatie
+ status]
{{:keys [beginGeldigheid
eindGeldigheid]} :Voorkomen} :voorkomen}]
{:id (some-> identificatie first bigdec)
:begindatum (some-> beginGeldigheid first)
- :einddatum (some-> eindGeldigheid first)})
+ :einddatum (some-> eindGeldigheid first)
+ :status (some-> status first)
+ :actief (-> status first status-actief boolean)})
(defn parse-point-geometrie
[k rec]
@@ 227,6 247,8 @@
(:geometrie) "?::gis.GEOMETRY"
(:begindatum :einddatum) "?::DATE"
(:neven_nummeraanduiding_ids :pand_ids) "?::NUMERIC[]"
+ (:status) "?::status"
+ (:actief) "?::BOOLEAN"
"?"))
(string/join ", "))
table (str sn "." table)]
@@ 262,7 284,8 @@
x.pand_ids AS a,
GENERATE_SUBSCRIPTS(x.pand_ids, 1) AS i
FROM " sn ".verblijfsobject x
- WHERE x.einddatum IS NULL
+ WHERE x.actief
+ AND (x.einddatum IS NULL OR x.einddatum > CURRENT_DATE)
) y")]
(map #(str "INSERT INTO " sn "." % "_neven
SELECT id, a[i] FROM (
@@ 271,7 294,8 @@
x.neven_nummeraanduiding_ids AS a,
GENERATE_SUBSCRIPTS(x.neven_nummeraanduiding_ids, 1) AS i
FROM " sn "." % " x
- WHERE x.einddatum IS NULL
+ WHERE x.actief
+ AND (x.einddatum IS NULL OR x.einddatum > CURRENT_DATE)
) y")
["verblijfsobject"
"standplaats"
M src/straatnaam/lvbag/bag.sql => src/straatnaam/lvbag/bag.sql +12 -11
@@ 1,5 1,4 @@
SELECT
- DISTINCT ON (num.postcode, num.huisnummer, num.huisletter, num.huisnummertoevoeging)
num.id AS id,
opr.naam AS openbareruimte,
num.huisnummer AS huisnummer,
@@ 49,31 48,33 @@ SELECT
gis.ST_Y(gis.ST_TRANSFORM(gis.ST_CENTROID(sta2.geometrie), 4326))) AS breedtegraad
FROM
nummeraanduiding num
-JOIN openbareruimte opr
- ON opr.id = num.openbareruimte_id AND opr.einddatum IS NULL
+LEFT JOIN openbareruimte opr
+ ON opr.id = num.openbareruimte_id AND opr.actief AND (opr.einddatum IS NULL OR opr.einddatum > CURRENT_DATE)
LEFT JOIN woonplaats wpl
- ON wpl.id = num.woonplaats_id AND wpl.einddatum IS NULL
+ ON wpl.id = num.woonplaats_id AND wpl.actief AND (wpl.einddatum IS NULL OR wpl.einddatum > CURRENT_DATE)
LEFT JOIN woonplaats wpl2
- ON wpl2.id = opr.woonplaats_id AND wpl2.einddatum IS NULL
+ ON wpl2.id = opr.woonplaats_id AND wpl2.actief AND (wpl2.einddatum IS NULL OR wpl2.einddatum > CURRENT_DATE)
LEFT JOIN verblijfsobject vbo
- ON vbo.nummeraanduiding_id = num.id AND vbo.einddatum IS NULL
+ ON vbo.nummeraanduiding_id = num.id AND vbo.actief AND (vbo.einddatum IS NULL OR vbo.einddatum > CURRENT_DATE)
LEFT JOIN verblijfsobject_neven vbo_n
ON vbo_n.nummeraanduiding_id = num.id
LEFT JOIN verblijfsobject vbo2
- ON vbo_n.id = vbo2.id AND vbo2.einddatum IS NULL
+ ON vbo_n.id = vbo2.id AND vbo2.actief AND (vbo2.einddatum IS NULL OR vbo2.einddatum > CURRENT_DATE)
LEFT JOIN ligplaats lig
- ON lig.nummeraanduiding_id = num.id AND lig.einddatum IS NULL
+ ON lig.nummeraanduiding_id = num.id AND lig.actief AND (lig.einddatum IS NULL OR lig.einddatum > CURRENT_DATE)
LEFT JOIN ligplaats_neven lig_n
ON lig_n.nummeraanduiding_id = num.id
LEFT JOIN ligplaats lig2
- ON lig_n.id = lig2.id AND lig2.einddatum IS NULL
+ ON lig_n.id = lig2.id AND lig2.actief AND (lig2.einddatum IS NULL OR lig2.einddatum > CURRENT_DATE)
LEFT JOIN standplaats sta
- ON sta.nummeraanduiding_id = num.id AND sta.einddatum IS NULL
+ ON sta.nummeraanduiding_id = num.id AND sta.actief AND (sta.einddatum IS NULL OR sta.einddatum > CURRENT_DATE)
LEFT JOIN standplaats_neven stand_n
ON stand_n.nummeraanduiding_id = num.id
LEFT JOIN standplaats sta2
- ON stand_n.id = sta2.id AND sta2.einddatum IS NULL
+ ON stand_n.id = sta2.id AND sta2.actief AND (sta2.einddatum IS NULL OR sta2.einddatum > CURRENT_DATE)
WHERE
+ num.actief
+AND
num.einddatum IS NULL
AND
num.postcode IS NOT NULL
M src/straatnaam/sanity.clj => src/straatnaam/sanity.clj +4 -5
@@ 72,11 72,10 @@
baseline values. Bad stats are logged."
[db sn]
(let [[pred
- baseline] (if (virgin? db)
- [#(< 0.90 (val %) 1.20)
- *baseline-count-by-object-type*]
- [#(< 0.95 (val %) 1.10)
- (count-by-object-type db "public")])
+ baseline] [#(< 0.90 (val %) 1.20)
+ (if (virgin? db)
+ *baseline-count-by-object-type*
+ (count-by-object-type db "public"))]
new (count-by-object-type db sn)
bad-ratios (remove pred (ratio-vals baseline new))]
(if (seq bad-ratios)