import dbConnect from 'lib/dbConnect' import withSession from 'lib/withSession' import NoteList from 'models/NoteList' import Note from 'models/Note' export default withSession(async (req, res) => { await dbConnect() switch (req.method) { case 'GET': try { const user = req.session.get('user') if (!user || !user.isVerified) { throw new Error('Something went wrong') } const {notes} = await NoteList.getList(user.noteList) res.status(200).json(notes) } catch (error) { res.status(400).json([]) } break case 'POST': try { const user = req.session.get('user') const {title, content} = req.body if (!user || !user?.isVerified || !content) { throw new Error('Something went wrong') } const note = await Note.create({content}) const {notes} = await NoteList.addNote(user.noteList, note._id, title) res.status(200).json(notes) } catch (error) { res.status(400).json([]) } break case 'DELETE': try { const user = req.session.get('user') const {_id} = req.body if (!user || !user?.isVerified || !_id) { throw new Error('Something went wrong') } 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) res.status(200).json(notes) } catch (error) { res.status(400).json([]) } break case 'PUT': try { const user = req.session.get('user') const {_id, title, noteId, content} = req.body if (!user || !user?.isVerified || !_id || !content) { throw new Error('Something went wrong') } await Note.updateNote(noteId, content) const {notes} = await NoteList.updateList(user.noteList, noteId, title) res.status(200).json(notes) } catch (error) { console.log(error) res.status(400).json([]) } break default: res.status(400).send() break } })