🐷
【Next.js】基礎から始めるNext.js API Routes【7Refactoring1】
【7Refactoring1】
YouTube: https://youtu.be/XOppEfG8hXw
今回はswitch文の内部のコードをリファクタリングして、
コードの見通しを良くします。
まずは、フォルダの一番上の階層に「lib」というフォルダを作成して、
さらに内部に「prisma」というフォルダを作成します。
こちらに「user.ts」を作成します。
lib/prisma/users.ts
import { prisma } from '../../utils/prismaClient'
import { User } from '@prisma/client'
export const prismaGetUsers = async () => {
const users = await prisma.user.findMany({
select: {
id: true,
name: true,
email: true,
},
})
return users
}
export const prismaCreateUser = async (
body: Omit<User, 'id' | 'createdAt' | 'updatedAt'>
) => {
const createdUser = await prisma.user.create({
data: {
email: body.email,
name: body.name,
password: body.password,
},
select: {
id: true,
name: true,
email: true,
},
})
return createdUser
}
上記のファイルが作成できましたら、
prismaでデータを処理する部分のメソッドを
上記で作成したメソッドに変更します。
pages/api/users/index.ts
import type { NextApiRequest, NextApiResponse } from 'next'
import { prismaCreateUser, prismaGetUsers } from '../../../lib/prisma/user'
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
const { method, body } = req
switch (method) {
case 'GET':
const users = await prismaGetUsers()
res.status(200).json(users)
break
case 'POST':
const createdUser = await prismaCreateUser(body)
res.status(200).json(createdUser)
break
default:
res.setHeader('Allow', ['GET', 'POST'])
res.status(405).end(`${method} method not allowed`)
}
}
Discussion