Skip to content

Instantly share code, notes, and snippets.

@ccfontes
Last active January 16, 2024 12:06
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ccfontes/3f566db393da14742a9a to your computer and use it in GitHub Desktop.
Save ccfontes/3f566db393da14742a9a to your computer and use it in GitHub Desktop.
Change datomic schema by adding a fulltext index to :url/path attribute
; 1. rename attribute: :url/path → :legacy/url-path-v1
(do (require '[datomic.api :as datomic] '[kanasubs.db :as db])
(datomic/transact @db/connection
[{:db/id :url/path, :db/ident :legacy/url-path-v1}]))
; 2. repurpose :url/path
(do (in-ns 'kanasubs.db)
(transact @connection
[{:db/id #db/id[:db.part/db]
:db/ident :url/path
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db/fulltext true
:db.install/_attribute :db.part/db}]))
; 3. move data from :legacy/url-path-v1 to :url/path
(do (require '[datomic.api :as datomic] '[kanasubs.db :as db])
(def values (datomic/q
'[:find ?e ?v
:where [?e :legacy/url-path-v1 ?v]]
(datomic/db @db/connection)))
(def transact-vec (mapv (fn [[e v]]
(hash-map :db/id e :url/path v))
values))
(datomic/transact @db/connection transact-vec))
; 4. excise :legacy/url-path-v1
(do (require '[datomic.api :as datomic] '[kanasubs.db :as db])
(datomic/transact @db/connection
[{:db/id #db/id[db.part/user], :db/excise :legacy/url-path-v1}]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment