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)