(ns db-import "Imports given file(s) to a db graph. This script is primarily for developing the import feature and for engineers who want to customize the import process" (:require [clojure.string :as string] [datascript.core :as d] ["path" :as node-path] ["os" :as os] ["fs" :as fs] ["fs/promises" :as fsp] [nbb.core :as nbb] [babashka.cli :as cli] [logseq.graph-parser.exporter :as gp-exporter] [logseq.common.graph :as common-graph] [logseq.common.config :as common-config] [logseq.tasks.db-graph.create-graph :as create-graph] [promesa.core :as p])) (defn- remove-hidden-files [dir config files] (if (seq (:hidden config)) (->> files (map #(assoc % ::rel-path (node-path/relative dir (:rpath %)))) ((fn [files] (common-config/remove-hidden-files files config ::rel-path))) (map #(dissoc % ::rel-path))) files)) (defn- build-graph-files "Given a graph directory, return absolute, allowed file paths and their contents in preparation for parsing" [dir*] (let [dir (node-path/resolve dir*)] (->> (common-graph/get-files dir) (mapv #(hash-map :rpath %))))) (defn- (gp-exporter/setup-import-options @conn {} (select-keys options [:tag-classes :property-classes]) {:notify-user prn}) (assoc-in [:extract-options :verbose] (:verbose options))) logseq-file? #(string/includes? (:rpath %) "logseq/") doc-files (remove logseq-file? files) logseq-files (filter logseq-file? files)] (println "Importing" (count files) "files ...") (p/do! (gp-exporter/import-logseq-files conn logseq-files (gp-exporter/setup-import-options @conn {} (select-keys options [:tag-classes :property-classes]) {:notify-user prn}) (assoc-in [:extract-options :verbose] (:verbose options))) files' (mapv #(hash-map :rpath %) (into [file] (map #(node-path/join (or js/process.env.ORIGINAL_PWD ".") %) files)))] (gp-exporter/import-from-doc-files! conn files'