summaryrefslogtreecommitdiff
path: root/sqlite.hoon
diff options
context:
space:
mode:
Diffstat (limited to 'sqlite.hoon')
-rw-r--r--sqlite.hoon163
1 files changed, 163 insertions, 0 deletions
diff --git a/sqlite.hoon b/sqlite.hoon
new file mode 100644
index 0000000..9d38dbe
--- /dev/null
+++ b/sqlite.hoon
@@ -0,0 +1,163 @@
+|%
+++ on-poke-noun |= a=*
+ ?: ?=(%sqlite a) dump-to-sqlite
+ ?: ?=(%licki a) init-lick
+ ?: ?=(%slick a) stop-lick
+ ?: ?=([%lick *] a) (send-lick +.a)
+ `this
+
+++ init-lick
+ ~& "init lick"
+ :_ this :_ ~
+ =/ note=note-arvo [%l %spin /'licker.sock']
+ [%pass /lick/init %arvo note]
+++ stop-lick
+ :_ this :_ ~
+ =/ note=note-arvo [%l %shut /'licker.sock']
+ [%pass /lick/init %arvo note]
+++ send-lick
+|= a=*
+ :_ this :_ ~
+ =/ note=note-arvo [%l %spit /'licker.sock' %noun a]
+ [%pass /lick/init %arvo note]
+
+++ dump-to-sqlite
+ =/ l (tap:gorm:tp f)
+ =/ l (scag 5 l)
+ =/ res
+ |-
+ ?~ l ~
+ =/ poast i.l
+ ~& >> poast=poast
+ $(l t.l)
+ :: TODO prov
+ :: =/ tv-chat
+ :: =/ tvs (~(got by here.tv) 'spandrell-tv')
+ :: =/ sta (~(got by schedule.tvs) started.current.tvs)
+ :: chat.sta
+ :: =/ data=dump-type [(tap:gorm:tp feed) (tap:torm:tp threads) active-threads paths tags tv-chat]
+ :: =/ vase !>((jam data))
+ :: =/ =soba:clay :_ ~ [/data/site-dump/(scot %da now.bowl)/jam %ins %noun vase]
+ :: =/ =nori:clay [%& soba]
+ :: =/ =task:clay [%info %blog nori]
+ :: =/ note=note-arvo [%c task]
+ :: [%pass /dump/[dap.bowl] %arvo note]
+ `this
+
+
+
+ ++ user-sql |= [author=@p joined=@da avatar=@t display=(unit @t)] ^- (list card)
+ =/ tsn (scow:parsing:sr %ud (unm:chrono:userlib joined))
+ =/ id (scow:parsing:sr %ud author)
+ =/ ava (trip avatar)
+ :: if planet
+ ?: (lth author (pow 2 32))
+ =/ dis ?~ display (scow %p author) (trip u.display)
+ =/ sql
+ """
+ INSERT OR IGNORE INTO users(id, joined,avatar, display)
+ VALUES({id}, {tsn}, '{ava}', '{dis}');
+ """
+ =/ sql2
+ """
+ INSERT INTO claims(user_id, protocol, value, notes)
+ VALUES({id}, 'urbit', '{(scow %p author)}', 'Set automatically on migration to BS5');
+ """
+ [(send-lick [%sql (crip sql)]) (send-lick [%sql sql2]) ~]
+ :: fooking comets
+
+ =/ dis ?~ display "NULL" "{'(trip u.display)'}"
+ =/ sql
+ """
+ INSERT OR IGNORE INTO users(id, joined, avatar, display)
+ VALUES({id}, {tsn}, '{ava}', '{dis}');
+ """
+ [(send-lick [%sql (crip sql)])]~
+
+ ::
+ ++ tag-sql |= tags=(set @t) ^- (list card)
+ %- ~(run in tags) |= tag=@t
+ =/ sql
+ """
+ INSERT OR IGNORE INTO tags(tag) VALUES('{(trip tag)}')
+ """
+ (send-lick [%sql (crip sql)])
+
+ ++ tagpost-sql |= [tag=@t post-id=tape]
+
+ =/ sql
+ """
+ INSERT OR IGNORE INTO tags_posts(tag, post_id) VALUES('{(trip tag)}', {post-id})
+ """
+ (send-lick [%sql (crip sql)])
+
+ ++ tagcomment-sql |= [tag=@t post-id=tape]
+
+ =/ sql
+ """
+ INSERT OR IGNORE INTO tags_comments(tag, comment_id) VALUES('{(trip tag)}', {post-id})
+ """
+ (send-lick [%sql (crip sql)])
+
+ ++ post-sql |= [ted=thread:tp =post:tp] ^- (list card)
+ =/ tsn (scow:parsing:sr %ud (unm:chrono:userlib id.post))
+ =/ author-idn (scow %p author.post)
+ =/ title (trip title.ted)
+ =/ snippet (content-list-to-md:ui snip.ted)
+ =/ content (content-to-md:ui contents.post)
+ =/ url (trip (spat path.ted))
+ =/ sql
+ """
+ INSERT INTO posts(ts,author_id, title, content, snippet, url)
+ VALUES({tsn}, {author-idn}, '{title}', '{content}', '{snippet}', '{url}');
+ """
+ :- (send-lick [%sql (crip sql)])
+ (~(run in tags.ted) |=(tag=@t (tagpost-sql tag tsn)))
+
+ ++ comment-sql |= =post:tp ^- (list card)
+
+ =/ tsn (scow:parsing:sr %ud (unm:chrono:userlib id.post))
+ =/ user-id (scow %p author.post)
+ =/ content (content-to-md:ui contents.post)
+ =/ post-id (scow:parsing:sr %ud (unm:chrono:userlib +.pid.post))
+ =/ parent-id ?~ parent.post "NULL" (scow:parsing:sr %ud (unm:chrono:userlib post-id))
+ =/ sql
+ """
+ INSERT INTO comments(ts,user_id, content, approved, comment_type, post_id, parent_id)
+ VALUES({tsn}, {user-id}, {content}, {approved}, {type}, {post-id}, {parent-id});
+ """
+ :- (send-lick [%sql (crip sql)])
+ (~(run in tags.ted) |=(tag=@t (tagcomment-sql tag tsn)))
+ ++ insert-sql3
+ """
+ INSERT INTO tags(tag)
+ VALUES({tsn}, {user-idn}, {content}, {approved-n}, {type}, {post-idn}, {parent-idn});
+ """
+ ++ ted-cards |= ted=thread:tp ^- (list card)
+
+ =/ post (get:gorm:tp feed pid.ted)
+ ?~ post ~& >>> nooooo-post=ted !!
+ =/ user-cards (user-sql author.u.post id.u.post '' ~)
+ =/ tags-cards (tag-sql tags.ted)
+ =/ post-cards (post-sql ted u.post)
+ %+ weld user-cards %+ weld tags-cards post-cards
+
+ ++ post-cards |= =post:tp ^- (list card)
+
+ =/ user-cards (user-sql author.post id.post '' ~)
+ =/ tags-cards (tag-sql tags.post)
+ =/ post-cards (comment-sql post)
+ %+ weld user-cards %+ weld tags-cards post-cards
+
+++ on-arvo
+ |= [=(pole knot) =sign-arvo]
+ ?: ?=([%lick %soak *] sign-arvo)
+ ?+ [mark noun]:sign-arvo `this
+ [%connect ~] ((slog 'socket connected' ~) `this)
+ [%disconnected ~] ((slog 'socket disconnected' ~) `this)
+ [%error *] ((slog leaf+"socket error {(trip ;;(@t noun.sign-arvo))}" ~) `this)
+ [%noun *] ((slog leaf+"socket noun {(trip ;;(@t noun.sign-arvo))}" ~) `this)
+ ==
+ `this
+
+--