@@ -87,8 +87,9 @@ returned."
8787 file,
8888 title,
8989 \" level\" ,
90- '(' || group_concat(tags, ' ') || ')' as tags,
90+ tags,
9191 aliases,
92+ '(' || group_concat(links, ' ') || ')' as links,
9293 properties,
9394 meta
9495from
9899 file,
99100 title,
100101 \" level\" ,
101- tags,
102- '(' || group_concat(aliases, ' ') || ')' as aliases,
102+ '(' || group_concat(tags,
103+ ' ') || ')' as tags,
104+ aliases,
105+ links,
103106 properties,
104107 meta
105108 from
106109 (
107110 select
108- nodes.id as id,
109- nodes.file as file,
110- nodes.title as title,
111- nodes.\" level\" as \" level\" ,
112- tags.tag as tags,
113- aliases.alias as aliases,
114- nodes.properties as properties,
115- '(' || group_concat('(' || meta.prop
111+ id,
112+ file,
113+ title,
114+ \" level\" ,
115+ tags,
116+ '(' || group_concat(aliases,
117+ ' ') || ')' as aliases,
118+ links,
119+ properties,
120+ meta
121+ from
122+ (
123+ select
124+ nodes.id as id,
125+ nodes.file as file,
126+ nodes.title as title,
127+ nodes.\" level\" as \" level\" ,
128+ tags.tag as tags,
129+ aliases.alias as aliases,
130+ '(' || links.\" type\" || ' ' || links.dest || ')' as links,
131+ nodes.properties as properties,
132+ '(' || group_concat('(' || meta.prop
116133 || ' '
117134 || meta.value
118135 || ')',
119- ' ')
136+ ' ')
120137 || ')' as meta
121- from nodes
122- left join tags on tags.node_id = nodes.id
123- left join aliases on aliases.node_id = nodes.id
124- left join meta on meta.node_id = nodes.id
125- group by nodes.id, tags.tag, aliases.alias )
126- group by id, tags )
127- group by id" ))
138+ from nodes
139+ left join tags on tags.node_id = nodes.id
140+ left join aliases on aliases.node_id = nodes.id
141+ left join meta on meta.node_id = nodes.id
142+ left join links on links.\" source\" = nodes.id
143+ group by
144+ nodes.id,
145+ tags.tag,
146+ aliases.alias,
147+ links.dest)
148+ group by
149+ id,
150+ tags,
151+ links)
152+ group by
153+ id,
154+ links)
155+ group by
156+ id" ))
128157 notes)
129158 (dolist (row rows notes)
130159 (let ((id (nth 0 row))
@@ -133,8 +162,9 @@ group by id"))
133162 (level (nth 3 row))
134163 (tags (nth 4 row))
135164 (aliases (nth 5 row))
136- (properties (nth 6 row))
137- (meta (nth 7 row)))
165+ (links (nth 6 row))
166+ (properties (nth 7 row))
167+ (meta (nth 8 row)))
138168 (dolist (name (cons title aliases))
139169 (let ((note (make-vulpea-note
140170 :path file
@@ -146,6 +176,9 @@ group by id"))
146176 :aliases aliases
147177 :id id
148178 :level level
179+ :links (seq-uniq (seq-map
180+ #'vulpea-db--parse-link-pair
181+ links))
149182 :properties properties
150183 :meta (seq-map
151184 (lambda (row )
@@ -221,17 +254,34 @@ If the FILE is relative, it is considered to be relative to
221254 [:select [prop value]
222255 :from meta
223256 :where (= node-id $s1)]
224- id))))
257+ id)))
258+ (links (seq-map
259+ #'vulpea-db--parse-link-pair
260+ (org-roam-db-query
261+ [:select [type dest]
262+ :from links
263+ :where (and (= source $s1))]
264+ id))))
225265 (make-vulpea-note
226266 :id id
227267 :path (org-roam-node-file node)
228268 :level (or (org-roam-node-level node) 0 )
229269 :title title
230270 :aliases (org-roam-node-aliases node)
231271 :tags (org-roam-node-tags node)
272+ :links (seq-uniq links)
232273 :properties (org-roam-node-properties node)
233274 :meta meta))))
234275
276+ (defun vulpea-db--parse-link-pair (link )
277+ " Parse LINK pair."
278+ (let ((type (car link ))
279+ (value (cadr link )))
280+ (pcase type
281+ (`" http" (cons type (concat type " :" value)))
282+ (`" https" (cons type (concat type " :" value)))
283+ (_ (cons type value)))))
284+
235285
236286
237287(defconst vulpea-db--schemata
0 commit comments