diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/app.phel | 1 | ||||
| -rw-r--r-- | src/controller/routes.phel | 16 | ||||
| -rw-r--r-- | src/db.phel | 2 | ||||
| -rw-r--r-- | src/view/main.phel | 6 |
4 files changed, 24 insertions, 1 deletions
diff --git a/src/app.phel b/src/app.phel index 7df561f..41565bf 100644 --- a/src/app.phel +++ b/src/app.phel @@ -14,6 +14,7 @@ :get {:handler routes/ping-handler} :post {:handler routes/ping-handler}}] ["/book" {:post {:handler routes/book-create-handler}}] + ["/book/{id}/session" {:post {:handler routes/book-session-create-handler}}] ["/author/{id}" {:name :author :get {:handler routes/author-view-handler}}]])) diff --git a/src/controller/routes.phel b/src/controller/routes.phel index 2e537db..7e1cde8 100644 --- a/src/controller/routes.phel +++ b/src/controller/routes.phel @@ -37,6 +37,22 @@ :updated_at time}))}))))) (h/response-from-map {:status 301 :headers {:location "/"}})) +(defn book-session-create-handler [request] + (let [id (get-in request [:attributes :match :path-params :id]) + time (php/time)] + (pdo/with-transaction conn + (let [session-id (pdo/insert conn :books_sessions {:book_id id + :status "started" + :started_at time + :created_at time + :updated_at time})] + (pdo/insert conn :sessions_progress {:session_id session-id + :progress 0 + :total 0 + :created_at time + :updated_at time})))) + (h/response-from-map {:status 301 :headers {:location "/"}})) + (defn author-view-handler [req] (let [id (get-in req [:attributes :match :path-params :id]) author (first (pdo/select conn "select * from authors where id = :author_id" {:author_id id})) diff --git a/src/db.phel b/src/db.phel index a83a290..33aee97 100644 --- a/src/db.phel +++ b/src/db.phel @@ -5,5 +5,7 @@ (defn initialize-database [] (pdo/exec conn "create table if not exists books (id integer primary key autoincrement, title varchar(255), subtitle varchar(255), created_at integer, updated_at integer)") + (pdo/exec conn "create table if not exists books_sessions (id integer primary key autoincrement, book_id integer, status string, started_at integer, stopped_at integer, created_at integer, updated_at integer)") + (pdo/exec conn "create table if not exists sessions_progress (id integer primary key autoincrement, session_id integer, progress integer, total integer, created_at integer, updated_at integer)") (pdo/exec conn "create table if not exists authors (id integer primary key autoincrement, name varchar(255), created_at integer, updated_at integer)") (pdo/exec conn "create table if not exists authors_books (author_id integer, book_id integer)")) diff --git a/src/view/main.phel b/src/view/main.phel index 809b765..decd4d5 100644 --- a/src/view/main.phel +++ b/src/view/main.phel @@ -44,7 +44,11 @@ (for [b :in books] [:li (:title (:book b)) " by " - (authors-list (:authors b) router)])]] + (authors-list (:authors b) router) + " " + [:form {:action (str "/book/" (:id (:book b)) "/session") + :method "POST"} + [:button "Start"]]])]] [:aside [:h2 "Add new book"] [:div {:class "flex-center position-ref full-height"} |
