Skip to content

Instantly share code, notes, and snippets.

(def routes
(-> (trail/resource :posts :only [:index :show])))
; =>
[
[:get "/posts" posts/index]
[:get "/posts/:id" posts/show]
]
(def routes
@swlkr
swlkr / trail-v2-whats-new.clj
Created December 17, 2017 21:24
Trail V2 What's New
; v 1.13.0
(trail/resource :posts)
; =>
; GET /posts => posts/index
; GET /posts/:id => posts/show
; GET /posts/new => posts/new-
; GET /posts/:id/edit => posts/edit
; POST /posts => posts/create
; PUT /posts/:id => posts/update-
; DELETE /posts => posts/delete
(ns your-project.models.items
(:require [oksql.core :as oksql])
(:refer-clojure :exclude [update]))
(def db {:connection-uri "postgres://localhost:5432/your_project_db"})
(defn create [m]
(oksql/insert db :items m))
(defn update [id m]
-- name: where
where id = :id
returning *
(ns your-project.models.items
(:require [oksql.core :as oksql])
(:refer-clojure :exclude [update]))
(def db {:connection-uri "postgres://localhost:5432/your_project_db"})
(def query (partial oksql/query db))
(defn create [m]
(query :items/insert m))
(ns your-project.models.items
(:require [oksql.core :as oksql]))
(def db {:connection-uri "postgres://localhost:5432/your_project_db"})
(def query (partial oksql/query db))
(defn all []
(query :items/all))
@swlkr
swlkr / items.sql
Last active November 6, 2017 19:28
-- name: insert
-- fn: first
insert into items (id, name, created_at)
values (:id, :name, :created_at)
returning *
-- name: update
-- fn: first
update items
set name = :name
create table items (
id serial primary key,
name text,
created_at timestamp
)
-- name: fetch
-- fn: first
select *
from items
where id = :id
-- name: all
select *
from items
order by created_at desc
(ns your-proj.controllers.posts-controller
(:require [coast.core :as coast]
[your-proj.models.posts :as posts]
[your-proj.views.posts :as views.posts]))
(defn index [request]
(let [posts (posts/all)]
(views.posts/index (assoc request :posts posts))))
(defn show [request]