(ns blog.server (:require ["express" :as express] ["express-handlebars" :refer [engine]] [blog.db :as db] [blog.env :as env] [blog.handlers :as handlers])) (def app (express)) (def port (env/get-port)) (def client (db/create-client)) (defn setup-engine "Sets the engine to handlebars and simple set up." [] ; For using .hbs as the file extension instead of .handlebars (. app engine ".hbs" (engine (-> {:extname ".hbs" :defaultLayout "main"} (cljs.core/clj->js)))) (. app set "view engine" ".hbs") (. app set "views" "./views")) (defn set-routes "Sets the routes for server." [] (. app get "/" (handlers/index-page-handler-factory client)) (fn [req res] (. app get "/admin" (handlers/admin-panel-handler-factory client)) (. app get "/htmx/articles/:id" (handlers/htmx-get-article-handler-factory client)) (. app get "/htmx/admin/rows/article/:id/" (handlers/htmx-get-article-row-handler-factory client)) (. app get "/htmx/admin/modals/article/content/:id/" (handlers/htmx-get-article-preview-content-handler-factory client)) ) (defn start "Starts server." [] (setup-engine) (set-routes) (db/connect-client client) (. app listen port (fn [] (println "Listen on " port))))