08-08-2020
jester-web-app-using-mustache-template
jester-web-app-using-mustache-template
#nimblog.nim
import jester,os,mustache
import strutils,asyncdispatch
import database
let settings = newSettings()
if existsEnv("PORT"):
settings.port = Port(parseInt(getEnv("PORT")))
let db = newDatabase()
routes:
get "/":
var user: BlogPosts
let content = newContext(searchDirs = @["./src/views"])
resp "{{>main}}".render(content)
get "/about":
let content = newContext(searchDirs = @["./src/views"])
resp "{{>about}}".render(content)
get "/contact":
let content = newContext(searchDirs = @["./src/views"])
resp "{{>contact}}".render(content)
post "/query":
let content = newContext(searchDirs = @["./src/views/partials"])
resp "{{>query}}".render(content)
get "/create":
let content = newContext(searchDirs = @["./src/views"])
resp "{{>create}}".render(content)
post "/createnewpost":
let allpost = BlogPosts(
title: @"title",
content: @"content"
)
db.post(allpost)
redirect("/")
runForever()
Now create Database for the blog to store all of your posts . Here we are using db_sqlite.
import db_sqlite
type
Database* = ref object
db*: DbConn
BlogPosts* = object
title*: string
content*: string
proc newDatabase*(filename = "nimblog.db"): Database =
new result
result.db = open(filename, "", "", "")
proc post*(database: Database, bposts: BlogPosts) =
database.db.exec(sql"INSERT INTO BlogPosts VALUES (?, ?);",
bposts.title,bposts.content)
proc close*(database: Database) =
database.db.close()
proc setup*(database: Database) =
database.db.exec(sql"""
CREATE TABLE IF NOT EXISTS BlogPosts(
title TEXT,
content TEXT
);
""")
proc createPost*(database: Database, blogpost: BlogPosts) =
database.db.exec(sql"INSERT INTO BlogPosts VALUES (?, ?);",
blogpost.title, blogpost.content)
proc getPosts*(database: Database, kpost: BlogPosts) =
database.db.exec(sql"SELECT title, content FROM BlogPosts WHERE title,content = (?,?);",
kpost.title , kpost.content)