diff options
Diffstat (limited to 'sqlite.hoon')
-rw-r--r-- | sqlite.hoon | 163 |
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 + +-- |