aboutsummaryrefslogtreecommitdiffstats
path: root/pages/api
diff options
context:
space:
mode:
Diffstat (limited to 'pages/api')
-rw-r--r--pages/api/notes/[id].js29
-rw-r--r--pages/api/notes/index.js16
-rw-r--r--pages/api/register.js26
3 files changed, 43 insertions, 28 deletions
diff --git a/pages/api/notes/[id].js b/pages/api/notes/[id].js
index 12f0ba4..a2cd680 100644
--- a/pages/api/notes/[id].js
+++ b/pages/api/notes/[id].js
@@ -1,11 +1,11 @@
import dbConnect from 'configs/dbConnect'
import withSession from 'hocs/withSession'
-import NoteList from 'models/NoteList'
-import Note from 'models/Note'
+import NoteList from 'apps/Notes/models/NoteList'
+import Note from 'apps/Notes/models/Note'
export default withSession(async (req, res) => {
+ const conn = await dbConnect()
const { id: _id } = req.query
- await dbConnect()
switch (req.method) {
case 'GET':
@@ -24,12 +24,12 @@ export default withSession(async (req, res) => {
res.status(200).json(note)
} catch (error) {
- console.log(error)
res.status(400).json({ error: true })
}
break
case 'DELETE':
try {
+ const session = await conn.startSession()
const user = req.session.get('user')
if (!user || !user?.isVerified || !_id) {
@@ -39,17 +39,20 @@ export default withSession(async (req, res) => {
const noteId = await NoteList.getNoteId(user.noteList, _id)
if (!noteId) throw new Error('Something went wrong')
- await Note.findByIdAndDelete(noteId)
- const { notes } = await NoteList.removeNote(user.noteList, _id)
+ await session.withTransaction(async () => {
+ await Note.findByIdAndDelete(noteId)
+ const { notes } = await NoteList.removeNote(user.noteList, _id)
- res.status(200).json(notes)
+ session.endSession()
+ res.status(200).json(notes)
+ })
} catch (error) {
- console.log(error)
res.status(400).json([])
}
break
case 'PUT':
try {
+ const session = await conn.startSession()
const user = req.session.get('user')
const { title, noteId, content } = req.body
@@ -57,12 +60,14 @@ export default withSession(async (req, res) => {
throw new Error('Something went wrong')
}
- await Note.updateNote(noteId, content)
- const { notes } = await NoteList.updateList(user.noteList, noteId, title)
+ await session.withTransaction(async () => {
+ await Note.updateNote(noteId, content)
+ const { notes } = await NoteList.updateList(user.noteList, noteId, title)
- res.status(200).json(notes)
+ session.endSession()
+ res.status(200).json(notes)
+ })
} catch (error) {
- console.log(error)
res.status(400).json([])
}
break
diff --git a/pages/api/notes/index.js b/pages/api/notes/index.js
index 16cb88c..86369ed 100644
--- a/pages/api/notes/index.js
+++ b/pages/api/notes/index.js
@@ -1,10 +1,10 @@
import dbConnect from 'configs/dbConnect'
import withSession from 'hocs/withSession'
-import NoteList from 'models/NoteList'
-import Note from 'models/Note'
+import NoteList from 'apps/Notes/models/NoteList'
+import Note from 'apps/Notes/models/Note'
export default withSession(async (req, res) => {
- await dbConnect()
+ const conn = await dbConnect()
switch (req.method) {
case 'GET':
@@ -24,6 +24,7 @@ export default withSession(async (req, res) => {
break
case 'POST':
try {
+ const session = await conn.startSession()
const user = req.session.get('user')
const { title, content } = req.body
@@ -31,10 +32,13 @@ export default withSession(async (req, res) => {
throw new Error('Something went wrong')
}
- const note = await Note.create({ content })
- const { notes } = await NoteList.addNote(user.noteList, note._id, title)
+ await session.withTransaction(async () => {
+ const note = await Note.create({ content })
+ const { notes } = await NoteList.addNote(user.noteList, note._id, title)
- res.status(200).json(notes)
+ session.endSession()
+ res.status(200).json(notes)
+ })
} catch (error) {
res.status(400).json([])
}
diff --git a/pages/api/register.js b/pages/api/register.js
index 036cede..ba72e53 100644
--- a/pages/api/register.js
+++ b/pages/api/register.js
@@ -3,25 +3,31 @@ import sendMail from 'configs/sendMail'
import withSession from 'hocs/withSession'
import { subject, text, html } from 'helpers/email'
import User from 'models/User'
-import NoteList from 'models/NoteList'
+import NoteList from 'apps/Notes/models/NoteList'
export default withSession(async (req, res) => {
- await dbConnect()
+ const conn = await dbConnect()
switch (req.method) {
case 'POST':
try {
- const noteList = await NoteList.create({})
+ const session = await conn.startSession()
- const { _id, email, verificationKey: key, theme, language } = await User.create({ ...req.body, noteList })
- if (!email) { throw new Error('Something went wrong') }
+ await session.withTransaction(async () => {
+ const noteList = await NoteList.create({})
+ const { _id, email, verificationKey: key, theme, language } = await User.create({ ...req.body, noteList })
- sendMail(req.body.email, subject(language), text(language, key), html(language, key))
+ if (!email) { throw new Error('Something went wrong') }
- const user = { _id, email, noteList, theme, language, isVerified: false, isLoggedIn: true }
- req.session.set('user', user)
- await req.session.save()
- res.status(201).json(user)
+ sendMail(req.body.email, subject(language), text(language, key), html(language, key))
+
+ const user = { _id, email, noteList, theme, language, isVerified: false, isLoggedIn: true }
+ req.session.set('user', user)
+ await req.session.save()
+
+ session.endSession()
+ res.status(201).json(user)
+ })
} catch (error) {
res.status(400).json({ isLoggedIn: false })
}