dh_demo

DreamHanks demo project
git clone git://git.lair.cx/dh_demo
Log | Files | Refs | README

wikis.ts (973B)


      1 import { ERR_INTERNAL, ERR_INVALID_REQUEST, ERR_METHOD_NOT_ALLOWED } from '@/lib/apierror'
      2 import { listWikiByOwnerId, listWikiLinksByOwnerId } from '@/lib/models/wiki_info'
      3 import { NextApiRequest, NextApiResponse } from 'next'
      4 
      5 export default async function handler (req: NextApiRequest, res: NextApiResponse) {
      6   if (req.method !== 'GET') {
      7     res.status(405).json(ERR_METHOD_NOT_ALLOWED)
      8     return
      9   }
     10 
     11   // 쿼리에서 ID 파싱
     12   let id: number | typeof req.query.id = req.query.id
     13   if (typeof id !== 'string') {
     14     res.status(400).json(ERR_INVALID_REQUEST)
     15     return
     16   }
     17 
     18   try {
     19     id = parseInt(id, 10)
     20   } catch (e) {
     21     res.status(400).json(ERR_INVALID_REQUEST)
     22     return
     23   }
     24 
     25   try {
     26     const out = req.query.format === 'links'
     27       ? await listWikiLinksByOwnerId([id])
     28       : await listWikiByOwnerId([id])
     29 
     30     res.status(200).json(out)
     31   } catch (e) {
     32     console.error('listWiki: database error:', e)
     33     res.status(500).json(ERR_INTERNAL)
     34   }
     35 }