From 90d0833d1de174bb9ae20bda28b9bf2d970d7ed1 Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Fri, 18 Mar 2022 00:52:42 +0300 Subject: [PATCH] refactor: handlers & sql queries --- handlers.js | 24 +++++++++--------------- helpers/db.js | 1 + package.json | 2 +- response.js | 5 +++++ server.js | 1 + sql/seed.sql | 12 ++++++------ 6 files changed, 23 insertions(+), 22 deletions(-) diff --git a/handlers.js b/handlers.js index e5f5761..0a354bf 100644 --- a/handlers.js +++ b/handlers.js @@ -20,12 +20,7 @@ export const indexPageHandler = async (req, res) => { articles: data.rows, }); } catch (error) { - console.error(error); - res.render( - './views/500.hbs', - { title: '500 | Internal server error ' }, - 500 - ); + res.serverError(error); } }; @@ -60,22 +55,21 @@ export const getArticleHandler = async (req, res) => { article: data.rows[0], }); } catch (error) { - console.error(error); - res.render( - './views/500.hbs', - { title: '500 | Internal server error ' }, - 500 - ); + res.serverError(error); } }; /** * POST - Create article * - * @param {http.ClientRequest} req + * @param {http.RequestOptions} req * @param {Response} res */ export const createArticleHandler = async (req, res) => { - res.json({ data: `POST ${req.url}` }); - return; + try { + res.json({ data: `POST ${req.url}` }); + return; + } catch (error) { + res.serverError(error); + } }; diff --git a/helpers/db.js b/helpers/db.js index 9f53e5b..0e75dd8 100644 --- a/helpers/db.js +++ b/helpers/db.js @@ -19,6 +19,7 @@ class DbHelper { await client.end(); } catch (error) { console.error(error); + process.exit(1); } } } diff --git a/package.json b/package.json index 6c86f64..0ee8ee1 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "type": "module", "scripts": { "start": "node index.js", - "dev": "nodemon index.js -e", + "dev": "nodemon index.js", "db:init": "node initSchema.js", "db:seed": "node seed.js" }, diff --git a/response.js b/response.js index dc1494b..751471c 100644 --- a/response.js +++ b/response.js @@ -30,6 +30,11 @@ class Response { this.send(text, 404); } + serverError(error, text = '500 | Internal server error') { + console.error(error); + this.render('./views/500.hbs', { title: text }, 500); + } + /** * Response with rendered page * diff --git a/server.js b/server.js index 0d18be6..40bff72 100644 --- a/server.js +++ b/server.js @@ -1,5 +1,6 @@ import http from 'node:http'; import fs from 'node:fs'; +import qs from 'node:querystring'; import mime from 'mime-types'; import hbs from 'handlebars'; import env from './env.js'; diff --git a/sql/seed.sql b/sql/seed.sql index 3012b52..e4233a7 100644 --- a/sql/seed.sql +++ b/sql/seed.sql @@ -11,22 +11,22 @@ INSERT INTO "articles" ( 'First article', 'Lorem ipsum dolor, sit amet consectetur adipisicing elit. Officia dolorum quae voluptas odio quisquam nihil tempora quis accusamus reprehenderit qui.', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Laboriosam, cupiditate consequatur odit est voluptas praesentium minima? Obcaecati itaque exercitationem magnam maiores dolores, quae voluptate facere repellendus minus quas rem corporis. Cumque quidem repellendus voluptatem nostrum laudantium voluptates accusamus error exercitationem dolorem id tempora suscipit reiciendis, odit aliquid libero possimus sit similique quaerat unde. Ullam, iusto dicta magni dolore minima molestias, repellendus mollitia reiciendis praesentium illo corporis ipsam provident aut, corrupti pariatur nulla. Iste debitis perspiciatis itaque! Sed at ab dolores? Dolorum voluptate possimus deserunt sit libero similique doloremque? Mollitia esse nam obcaecati repellendus quaerat iure tempore fugiat. Id, eligendi dolorem!', - '2022-03-17', - '2022-03-17' + now(), + now() ), ( '2', 'Second article', 'Lorem ipsum dolor, sit amet consectetur adipisicing elit. Officia dolorum quae voluptas odio quisquam nihil tempora quis accusamus reprehenderit qui.', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Laboriosam, cupiditate consequatur odit est voluptas praesentium minima? Obcaecati itaque exercitationem magnam maiores dolores, quae voluptate facere repellendus minus quas rem corporis. Cumque quidem repellendus voluptatem nostrum laudantium voluptates accusamus error exercitationem dolorem id tempora suscipit reiciendis, odit aliquid libero possimus sit similique quaerat unde. Ullam, iusto dicta magni dolore minima molestias, repellendus mollitia reiciendis praesentium illo corporis ipsam provident aut, corrupti pariatur nulla. Iste debitis perspiciatis itaque! Sed at ab dolores? Dolorum voluptate possimus deserunt sit libero similique doloremque? Mollitia esse nam obcaecati repellendus quaerat iure tempore fugiat. Id, eligendi dolorem!', - '2022-03-17', - '2022-03-17' + now(), + now() ), ( '3', 'Third article', 'Lorem ipsum dolor, sit amet consectetur adipisicing elit. Officia dolorum quae voluptas odio quisquam nihil tempora quis accusamus reprehenderit qui.', 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Laboriosam, cupiditate consequatur odit est voluptas praesentium minima? Obcaecati itaque exercitationem magnam maiores dolores, quae voluptate facere repellendus minus quas rem corporis. Cumque quidem repellendus voluptatem nostrum laudantium voluptates accusamus error exercitationem dolorem id tempora suscipit reiciendis, odit aliquid libero possimus sit similique quaerat unde. Ullam, iusto dicta magni dolore minima molestias, repellendus mollitia reiciendis praesentium illo corporis ipsam provident aut, corrupti pariatur nulla. Iste debitis perspiciatis itaque! Sed at ab dolores? Dolorum voluptate possimus deserunt sit libero similique doloremque? Mollitia esse nam obcaecati repellendus quaerat iure tempore fugiat. Id, eligendi dolorem!', - '2022-03-17', - '2022-03-17' + now(), + now() )