Skip to content

Commit

Permalink
Merge pull request #138 from lipas-liikuntapaikat/type-code-renewal-3
Browse files Browse the repository at this point in the history
Type code renewal 3
  • Loading branch information
vharmain authored Nov 24, 2024
2 parents d609289 + a148a16 commit e747ef5
Show file tree
Hide file tree
Showing 47 changed files with 10,066 additions and 1,684 deletions.
8 changes: 3 additions & 5 deletions .env.sample.sh
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,9 @@ export UTP_WEBHOOK_TOKEN_URL="https://login.microsoftonline.com/bdb27328-5c0b-41
# PTV
export PTV_API_URL="https://api.palvelutietovaranto.trn.suomi.fi/api"
export PTV_TOKEN_URL="https://palvelutietovaranto.trn.suomi.fi/api/auth/api-login"
export PTV_SERVICE_URL="https://api.palvelutietovaranto.trn.suomi.fi/api/v11/Service"
export PTV_SERVICE_LOCATION_URL="https://api.palvelutietovaranto.trn.suomi.fi/api/v11/ServiceChannel/ServiceLocation"
export PTV_ORG_ID=***FILL_THIS***
export PTV_API_USERNAME=***FILL_THIS***
export PTV_API_PASSWORD=***FILL_THIS***
# Test env requires API credentials per org-id, so handled in the code
# export PTV_API_USERNAME=***FILL_THIS***
# export PTV_API_PASSWORD=***FILL_THIS***

# Open AI
export OPEN_AI_API_KEY=***FILL_THIS***
108 changes: 107 additions & 1 deletion webapp/dev/user.clj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
(:require
[clojure.tools.namespace.repl]
[integrant.repl :refer [reset reset-all halt go]]
[integrant.repl.state]))
[integrant.repl.state]
[lipas.data.prop-types :as prop-types]))

(integrant.repl/set-prep! (fn []
(dissoc @(requiring-resolve 'lipas.backend.config/system-config) :lipas/nrepl)))
Expand Down Expand Up @@ -35,6 +36,11 @@
(assert-running-system)
(:lipas/search (current-system)))

(defn ptv
[]
(assert-running-system)
(:lipas/ptv (current-system)))

(defn reindex-search!
[]
((requiring-resolve 'lipas.backend.search-indexer/main) (db) (search) "search"))
Expand All @@ -61,4 +67,104 @@

(require '[migratus.core :as migratus])
(migratus/create nil "activities_status" :sql)
(migratus/create nil "roles" :edn)
(migratus/create nil "year_round_use" :sql)

(require '[lipas.maintenance :as maintenance])
(require '[lipas.backend.core :as core])

(def robot (core/get-user (db) "[email protected]"))

(maintenance/merge-types (db) (search) (ptv) robot 4530 4510)
(maintenance/merge-types (db) (search) (ptv) robot 4520 4510)
(maintenance/merge-types (db) (search) (ptv) robot 4310 4320)

(require '[lipas.data.types :as types])
(require '[lipas.data.types-old :as types-old])
(require '[lipas.data.prop-types :as prop-types])
(require '[lipas.data.prop-types-old :as prop-types-old])
(require '[clojure.set :as set])

(def new-types (set/difference
(set (keys types/all))
(set (keys types-old/all))))

(require '[clojure.string :as str])

(for [type-code (conj new-types 113)]
(println
(format "INSERT INTO public.liikuntapaikkatyyppi(
id, tyyppikoodi, nimi_fi, nimi_se, kuvaus_fi, kuvaus_se, liikuntapaikkatyyppi_alaryhma, geometria, tason_nimi, nimi_en, kuvaus_en)
VALUES (%s, %s, '%s', '%s', '%s', '%s', %s, '%s', '%s', '%s', '%s');"
type-code
type-code
(get-in types/all [type-code :name :fi])
(get-in types/all [type-code :name :se])
(get-in types/all [type-code :description :fi])
(get-in types/all [type-code :description :se])
(get-in types/all [type-code :sub-category])
(get-in types/all [type-code :geometry-type])
(-> types/all
(get-in [type-code :name :fi])
csk/->snake_case
(str/replace "ä" "a")
(str/replace "ö" "o")
(str/replace #"[^a-zA-Z]" "")
(->> (str "lipas_" type-code "_")))
(get-in types/all [type-code :name :en])
(get-in types/all [type-code :description :en]))))

(def new-props (set/difference
(set (keys prop-types/all))
(set (keys prop-types-old/all))))

new-props

(require '[camel-snake-kebab.core :as csk])
(def legacy-mapping (into {} (for [p new-props]
[(csk/->camelCaseKeyword p) p])))

(keys legacy-mapping)

(def legacy-mapping-reverse (set/map-invert legacy-mapping))

(require '[lipas.data.prop-types :as prop-types])

(def data-types
"Legacy lipas supports only these. Others will be treated as strings"
{"boolean" "boolean"
"numeric" "numberic"
"string" "string"})

(doseq [[legacy-prop-k prop-k] legacy-mapping]
(println
(format "INSERT INTO public.ominaisuustyypit(
nimi_fi, tietotyyppi, kuvaus_fi, nimi_se, kuvaus_se, ui_nimi_fi, nimi_en, kuvaus_en, handle)
VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');"
(csk/->snake_case (get-in prop-types/all [prop-k :name :fi]))
(get data-types (get-in prop-types/all [prop-k :data-type]) "string")
(get-in prop-types/all [prop-k :description :fi])
(get-in prop-types/all [prop-k :name :se])
(get-in prop-types/all [prop-k :description :se])
(get-in prop-types/all [prop-k :name :fi])
(get-in prop-types/all [prop-k :name :en])
(get-in prop-types/all [prop-k :description :en])
(name legacy-prop-k))))

(doseq [p new-props
[type-code m] types/all]
(when (contains? (set (keys (:props m))) p)
(println (str "-- Type " type-code))
(println (str "-- prop " p))
(println
(format
"INSERT INTO public.tyypinominaisuus(
liikuntapaikkatyyppi_id, ominaisuustyyppi_id, prioriteetti)
VALUES (%s, %s, %s);"
(format "(select id from liikuntapaikkatyyppi where tyyppikoodi = %s)"
type-code)
(format "(select id from ominaisuustyypit where handle = '%s')"
(name (legacy-mapping-reverse p)))
(get-in types/all [type-code :props p :priority])))))

)
27 changes: 27 additions & 0 deletions webapp/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions webapp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"@emotion/styled": "^11.11.5",
"@hello-pangea/dnd": "^16.6.0",
"@mapbox/togeojson": "^0.16.0",
"@mui/icons-material": "^5.16.7",
"@mui/material": "^5.15.19",
"@turf/area": "^6.5.0",
"@turf/bbox": "^6.0.1",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
UPDATE sports_site
SET document = jsonb_set(
document,
'{properties}',
(document::jsonb->'properties')::jsonb - 'year-round-use?'
)
WHERE document::jsonb->'properties' ? 'year-round-use?';
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
UPDATE sports_site
SET document = jsonb_set(document, '{properties, year-round-use?}', 'true')
WHERE id IN (
SELECT id
FROM sports_site_current
WHERE document::jsonb->'properties'->>'winter-usage?' = 'true' OR
document::jsonb->'properties'->>'summer-usage?' = 'true')
17 changes: 8 additions & 9 deletions webapp/src/clj/lipas/backend/config.clj
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,13 @@
:s3-bucket (env! :aws-s3-bucket)
:s3-bucket-prefix (env! :aws-s3-bucket-prefix)}
:ptv
{:api-url (env! :ptv-api-url)
:token-url (env! :ptv-token-url)
:service-url (env! :ptv-service-url)
:service-location-url (env! :ptv-service-location-url)
:creds
{:org-id (env! :ptv-org-id)
:api
{:username (env! :ptv-api-username)
:password (env! :ptv-api-password)}}}
(let [test-env? (= "test" (:ptv-env e/env "prod"))]
{:env (:ptv-env e/env "prod")
:api-url (env! :ptv-api-url)
:token-url (env! :ptv-token-url)
:creds (when-not test-env?
{:api {:username (env! :ptv-api-username)
:password (env! :ptv-api-password)}})})
:open-ai
{:api-key (env! :open-ai-api-key)
:project "ptv"
Expand All @@ -79,6 +77,7 @@
:search (ig/ref :lipas/search)
:mailchimp (ig/ref :lipas/mailchimp)
:aws (ig/ref :lipas/aws)
:ptv (ig/ref :lipas/ptv)
:utp
{:cms-api-url (env! :utp-cms-api-url)
:cms-api-user (env! :utp-cms-api-user)
Expand Down
Loading

0 comments on commit e747ef5

Please sign in to comment.