🐷

【frourio】apiを生やすためのメモ(一覧をgetする)

2022/03/06に公開

リクエストpath

  • yarn devした状態でtouch server/api/hogeのようにディレクトリを作成。
  • 自動的にhogeディレクトリ配下へindex.ts, controller.tsができる。
index.ts
import { Hoge } from '@prisma/client' // プロジェクトに合わせてdb接続を呼び出す

export type Methods = {
  get: {
    resBody: Hoge[] | undefined
  }
}

controllerで処理の振り分け

controller.ts
import { getHoges } from '$/service/hoges'
import { defineController } from './$relay'

export default defineController(() => ({
  get: async () => ({ status: 200, body: await getHoges() })
}))

バックエンドの純粋な関数(大体はDB操作を呼び出す)

server/service/hoge.ts
import { dbMethod } from '$/hogeDb/hoges'
import { Hoge } from '@prisma/client'

export const getHoges = async (): Promise<Hoge[] | undefined> => {
  return await dbMethod.getHoges()
}

DB操作

server/hogeDb/hoge.ts
import { prisma } from '$/lib/prismaClient'
import { Hoge } from '@prisma/client'

export const dbMethod = {
  getHoges: async (): Promise<Hoge[]> => {
    try {
      return await prisma.hoge.findMany()
    } catch (error: any) {
      throw new Error(error)
    }
  }
}

Discussion