PrismaはORMとしてのカスタマイズ性に制限があり、モデル名や関数名を動的に変更するような直接的な機能は提供していません。 ただし、Prisma Clientのインスタンスを拡張して、独自のメソッドを持つクラスを作成することで、似たような機能を実装することは可能です。
以下は、PrismaClientを拡張して、アクティブなユーザーだけを取得するためのカスタムメソッドactiveUsersメソッドを作成してみます。
import { PrismaClient, Prisma, User } from '@prisma/client'
class ExtendedPrismaClient extends PrismaClient {
constructor() {
super();
}
// アクティブなユーザーだけを取得するカスタムメソッド
async activeUsers(): Promise<User[]> {
return this.user.findMany({
where: {
isActive: true,
},
});
}
}
// 使用例
const run = async () => {
const prisma = new ExtendedPrismaClient();
const activeUsers = await prisma.activeUsers();
console.log(activeUsers);
}
run();