This commit is contained in:
Medzik 2021-09-17 19:38:34 +00:00
parent 8c6b02b340
commit 4197fb3cf0
7 changed files with 57 additions and 65 deletions

View File

@ -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

View File

@ -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<URL>({
}
})
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<URL>(MONGODB_COLLECTION, schema)
const URLModel = model<URL>('url', schema)
export = URLModel

View File

@ -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

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -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}`
}
}
}

View File

@ -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: {

View File

@ -3,7 +3,7 @@ import AniLink from 'gatsby-plugin-transition-link/AniLink'
import Seo from '../components/seo'
const LoginPage = () => {
const HomePage = () => {
return (
<>
<Seo
@ -25,4 +25,4 @@ const LoginPage = () => {
)
}
export default LoginPage
export default HomePage