iterate / mikrobloggeriet

0 stars 0 forks source link

Regenerere UUID-er til dokumenter med ugyldig UUID #107

Closed teodorlu closed 2 months ago

teodorlu commented 2 months ago

Problemdefinisjon

I #104 kom det fram vi har gamle dokumener med ugyldig UUID.

Jeg ønsker at vi ikke har ugyldige UUID-er i lagret metadata, og ønsker at vi genererer nye.

Risikovurdering

Hvis UUID-ene hadde vært brukt av andre systemer, hadde jeg ikke ønsket å gjøre dette, fordi jeg ønsker å gi garanti om at UUID-er aldri endres.

Basert på kodesøk og vurderinger i #104 konkluderer jeg at UUID-ene per i dag ikke er i bruk i andre systemer.

Jeg ønsker derfor at vi regenererer. PR mottas med takk hvis noen ønsker å gjøre jobben! Jobben kan feks gjøres manuelt, med shell-scripting, med babashka-scripting, eller fra en Clojure-REPL.

Dokumenter med ugyldig UUID

@tingstad har identifisert 3: https://github.com/iterate/mikrobloggeriet/issues/104#issuecomment-2074917008:

./o/olorm-49/meta.edn: :doc/uuid "25418c1c-b094-4080-0775-c42cf246de78",
./o/olorm-51/meta.edn: :doc/uuid "ac7b4e4d-db86-43fa-6def-0c5349a5aec2",
./text/kiel/kiel-2/meta.edn: :doc/uuid "9b7d0698-0574-400b-490a-a7cf3ead64c4",

Løsningsskisse Clojure

Hvis man skulle gjort dette med clojure, kunne man feks laget en funksjon fixmeta og brukt følgende kode "rundt" for å kjøre den på relevante EDN-filer:

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

(def meta-files (str/split-lines (str/trim "
./o/olorm-49/meta.edn
./o/olorm-51/meta.edn
./text/kiel/kiel-2/meta.edn
")))

(defn fixmeta [doc-meta] :TODO)

(doseq [f meta-files]
  (let [fixed (fixmeta (edn/read-string (slurp f)))]
    (spit f (with-out-str (clojure.pprint/pprint fixed)))))

Funksjonen clojure.core/assoc kan sette en verdi i et map, og funksjonen clojure.core/random-uuid kan generere en ny tilfeldig UUID.

Eller man kunne gjort det manuelt, men det lærer man mindre av.

tingstad commented 2 months ago
for f in \
  o/olorm-49/meta.edn \
  o/olorm-51/meta.edn\
  text/kiel/kiel-2/meta.edn
do
  sed -Ei.bak "/uuid/s/[^\"]{36}/$(./mblog.sh uuid4)/" $f
  sleep 1
done
teodorlu commented 2 months ago

Observasjon / digresjon: gøy at mblog.sh har et uuidv4-argument, men at det ikke er noe man finner når man leser hjelpeteksten. TIL.

teodorlu commented 2 months ago

@tingstad vil du kjøre? Skal jeg? Jeg er åpen for begge, eventuelt andre alternativer 😄

tingstad commented 2 months ago

Observasjon / digresjon: gøy at mblog.sh har et uuidv4-argument, men at det ikke er noe man finner når man leser hjelpeteksten. TIL.

🙂 Jeg gjør ofte noen nyttige funksjoner kallbare slik at jeg enklere kan teste/utvikle/bruke dem;

https://github.com/iterate/mikrobloggeriet/blob/03f865289c902e995c6439e499a0e779b10856a7/mblog.sh#L135-L137

@tingstad vil du kjøre? Skal jeg? Jeg er åpen for begge, eventuelt andre alternativer 😄

Jeg kan; https://github.com/iterate/mikrobloggeriet/pull/108