twtxtlist/src/worker.nim

47 lines
1006 B
Nim

import db_sqlite, os, streams, threadpool, twtxt
proc updateTweetsOnce() {. gcsafe .} =
var db = open("./data/twtxt.db", nil, nil, nil)
var users = db.getAllRows sql"select * from users where username != 'twtxtlist'"
for user in users.items():
echo "updating " & $user
spawn db.updateTweetsByUser(user[1], user[2])
proc updateSystemUser() =
let
fname = "public" / "twtxt.txt"
db = open("data/twtxt.db", nil, nil, nil)
if fname.existsFile:
try:
fname.removeFile
except: quit "can't make my list"
var
fout = fname.newFileStream fmWrite
if fout.isNil:
echo "wtf it's nil?"
return
let tweets = db.getAllRows(sql"select * from tweets where username='twtxtlist'")
for tweet in tweets.items:
let tweetObj = tweet.fromDBRow()
echo tweetObj
fout.writeLine $tweetObj
fout.close
echo "Updated system user"
when isMainModule:
while true:
spawn updateTweetsOnce()
spawn updateSystemUser()
sleep 300_000 # 5 minutes