Open AyumuOgasawara opened 4 days ago
prisma は クライアントが複数つくられるとエラーになるため、以下ように実装する。
warn(prisma-client) There are already 10 instances of Prisma Client actively running.
import { PrismaClient } from '@prisma/client'
const prismaClientSingleton = () => {
return new PrismaClient()
}
declare const globalThis: {
prismaGlobal: ReturnType<typeof prismaClientSingleton>;
} & typeof global;
const prisma = globalThis.prismaGlobal ?? prismaClientSingleton()
export default prisma
if (process.env.NODE_ENV !== 'production') globalThis.prismaGlobal = prisma
ただ、seedingをする際には、nextのアプリとしてではないため、上記ではなく、書き用用に、Prisma Clientを呼び出す。
import { PrismaClient } from '@prisma/client'
予算も作成することがめんどくさかったため、seedingで作成する。
TypeScriptのDateコンストラクタは、月を0始まり(0が1月、11が12月)で考えるため、9月を指定したい場合は、8として指定する必要があります。
よって、2024/9を作成する場合は、
new Date(2024, 8)
https://github.com/prisma/prisma/issues/5051#issuecomment-1279790199
prisma側では、登録されたものがUTCになるという場がバグがある。
以下の写真は、コード上では、2024/08/01-01:00と2024/09/01-01:00を指定したもの
コードの指定方法
// 予算の作成
// 8月分
for (let i = 1; i < 10; i++){
const newBudget = await prisma.budget.create({
data: {
amount: parseInt(faker.finance.amount({ min: 10000, max: 30000, dec: 0 })),
year_month: new Date(2024, 7, 1, 1),
userId: newUser.id,
categoryId: i,
}
})
console.log(`Created newBudget ${newBudget.year_month}`);
}
// 9月分
for (let i = 1; i < 10; i++){
const newBudget = await prisma.budget.create({
data: {
amount: parseInt(faker.finance.amount({ min: 10000, max: 30000, dec: 0 })),
year_month: new Date(2024, 8, 1, 1),
userId: newUser.id,
categoryId: i,
}
})
console.log(`Created newBudget ${newBudget.year_month}`);
}
ここでは、年と月が分かれば良いので、以下のように指定するようにする。濃くすれば、 UTCとの時差も考えなくて良い。
// 8月
new Date(2024, 7, 15)
// 9月
new Date(2024, 8, 15)
そうすることで、以下のように、8月9月のダミーデータが作成された。
概要
fakerでダミーデータを作成する。