Files
Baradb/clients/nim/ormin/examples/tweeter/src/tweeter.nim
T
dimgigov 4e54075078
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
Clients CI / build-server (push) Has been cancelled
Clients CI / test-python (push) Has been cancelled
Clients CI / test-javascript (push) Has been cancelled
Clients CI / test-nim (push) Has been cancelled
Clients CI / test-rust (push) Has been cancelled
Add Ormin ORM support for BaraDB (Nim client)
2026-05-15 21:49:08 +03:00

59 lines
1.5 KiB
Nim

import asyncdispatch, times
import jester
import database, model, views/[user, general]
proc userLogin(request: Request, user: var User): bool =
if request.cookies.hasKey("username"):
let username = request.cookies["username"]
if not findUser(username, user):
user = (username: username, following: @[])
create(user)
return true
else:
return false
routes:
get "/":
var user: User
if userLogin(request, user):
let messages = findMessage(user.following & user.username)
resp renderMain(renderTimeline(user.username, messages))
else:
resp renderMain(renderLogin())
get "/@name":
cond '.' notin @"name"
var user: User
if not findUser(@"name", user):
halt "User not found"
let messages = findMessage([user.username])
var currentUser: User
if userLogin(request, currentUser):
resp renderMain(renderUser(user, currentUser) & renderMessages(messages))
else:
resp renderMain(renderUser(user) & renderMessages(messages))
post "/follow":
var follower, target: User
if not findUser(@"follower", follower):
halt "Follower not found"
if not findUser(@"target", target):
halt "Follow target not found"
follow(follower, target)
redirect uri("/" & @"target")
post "/login":
setCookie("username", @"username", getTime().utc() + 2.hours)
redirect "/"
post "/createMessage":
let message = (
username: @"username",
time: getTime().toUnix().int,
msg: @"message"
)
post(message)
redirect "/"
runForever()