diff --git a/api/index.ts b/api/index.ts index 6752030..5b67ed8 100644 --- a/api/index.ts +++ b/api/index.ts @@ -1,5 +1,6 @@ import { VercelRequest, VercelResponse } from '@vercel/node' import axios from 'axios' + import dbConnect from '../lib/dbConnect' import URLModel from '../lib/schema' @@ -10,24 +11,20 @@ export default async (request: VercelRequest, response: VercelResponse) => { switch (method) { case 'POST': if (!request.body || !request.body.url) { - return response.status(400).json( - { - success: false, - message: 'Invalid body' - } - ) + return response.status(400).json({ + success: false, + message: 'Invalid body' + }) } try { await axios.get(request.body.url) } catch (err) { console.error(err) - return response.status(400).json( - { - success: false, - message: 'Invalid URL' - } - ) + return response.status(400).json({ + success: false, + message: 'Invalid URL' + }) } try { @@ -37,66 +34,63 @@ export default async (request: VercelRequest, response: VercelResponse) => { await url.save() - return response.status(200).json( - { - success: true, - url: request.body.url - } - ) + return response.status(200).json({ + success: true, + url, + message: `Added ${url.url}` + }) } catch (err) { console.error(err) - return response.status(400).json( - { - success: false, - message: 'Error Inserting to DB' - } - ) + return response.status(400).json({ + success: false, + message: 'Already exist?' + }) } case 'DELETE': if (!request.query.url) { - return response.status(400).json( - { - success: false, - message: 'Invalid body' - } - ) + return response.status(400).json({ + success: false, + message: 'Invalid body' + }) } try { const url = request.query.url if (typeof url != 'string') { - return response.status(400).json( - { - success: false, - message: 'Query URL isn\'t string' - } - ) + return response.status(400).json({ + success: false, + message: 'Query URL isn\'t string' + }) } - await URLModel.deleteOne({ + const del = await URLModel.findOneAndDelete({ url }) - return response.status(200).json( - { + if (del != null) { + return response.status(200).json({ success: true, - message: 'Deleted!', + message: `Deleted ${url}`, url - } - ) + }) + } else { + return response.status(400).json({ + success: false, + message: 'URL not exist?', + url + }) + } } catch (err) { console.error(err) - return response.status(400).json( - { - success: false, - message: 'Error Deleting from DB' - } - ) + return response.status(400).json({ + success: false, + message: 'Error Deleting from DB' + }) } default: response.status(200).json({ - db: await URLModel.find() + db: await URLModel.find() }) break diff --git a/lib/schema.ts b/lib/schema.ts index eddbcd4..e262d37 100644 --- a/lib/schema.ts +++ b/lib/schema.ts @@ -1,7 +1,5 @@ import { model, models, Schema } from 'mongoose' -const { MONGODB_COLLECTION } = process.env - interface URL { url: string } @@ -14,12 +12,16 @@ const schema = new Schema({ } }) -schema.path(MONGODB_COLLECTION).validate(async function(value) { - const count = await models.URL.countDocuments({ url: value }) +schema.path('url').validate(async function(value) { + if (models.url) { + return true + } + + const count = await models.url.countDocuments({ url: value }) return !count }, 'URL already exists') -const URLModel = model(MONGODB_COLLECTION, schema) +const URLModel = model('url', schema) export = URLModel diff --git a/src/css/base.sass b/src/css/base.sass index 70c62e3..4e27d7d 100644 --- a/src/css/base.sass +++ b/src/css/base.sass @@ -3,7 +3,7 @@ $fonts: "-apple-system, Roboto, sans-serif, serif" body color: #fff background-color: #111 - background: url("../images/blob.svg") no-repeat center center fixed + background: url("../images/background.svg") no-repeat center center fixed background-size: cover margin: 0 diff --git a/src/images/blob.svg b/src/images/background.svg similarity index 100% rename from src/images/blob.svg rename to src/images/background.svg diff --git a/src/pages/add.js b/src/pages/add.js index 65f81ca..fd96120 100644 --- a/src/pages/add.js +++ b/src/pages/add.js @@ -39,21 +39,17 @@ const AddURLPage = () => { success: { delay: 500, render({ data: { data } }) { - return `Added ${data.url}!` + return data.message } }, error: { delay: 500, render(err) { - let e = '' - if (err.data.response && err.data.response.data.message) { - e = err.data.response.data.message + return err.data.response.data.message } else { - e = err.data.toString() + return err.data.toString() } - - return `${e}` } } } diff --git a/src/pages/delete.js b/src/pages/delete.js index 0d59f05..2cbc437 100644 --- a/src/pages/delete.js +++ b/src/pages/delete.js @@ -36,7 +36,7 @@ const DeleteURLPage = () => { success: { delay: 500, render({ data: { data } }) { - return `If URL: ${data.url} existed, it has been deleted!` + return data.message } }, error: { diff --git a/src/pages/index.js b/src/pages/index.js index e04fd84..6eef1ab 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -3,7 +3,7 @@ import AniLink from 'gatsby-plugin-transition-link/AniLink' import Seo from '../components/seo' -const LoginPage = () => { +const HomePage = () => { return ( <> { ) } -export default LoginPage +export default HomePage