fix: prisma url in schema + first user becomes ADMIN
- Add url = env("DATABASE_URL") back to schema (required by Prisma 7.5)
- Simplify prisma.config.ts
- First registered user auto-promoted to ADMIN via databaseHooks
- Subsequent users get HOST role
This commit is contained in:
@@ -173,8 +173,8 @@ DEV_ACCESS_KEY=mySecretKey123
|
||||
## Prisma 7 Notes
|
||||
|
||||
- `prisma.config.ts` in project root (required by Prisma 7)
|
||||
- `datasourceUrl` passed via PrismaClient constructor, not in schema
|
||||
- Schema has no `url` in datasource block — only `provider`
|
||||
- `url = env("DATABASE_URL")` in schema datasource — standard approach, works with CLI and PrismaClient
|
||||
- `new PrismaClient()` without arguments — URL resolved from schema's `env("DATABASE_URL")`
|
||||
- Use `-- --webpack` flag for `next build` on Windows (Turbopack WASM issue)
|
||||
|
||||
## Auth Notes
|
||||
|
||||
@@ -4,9 +4,4 @@ import { defineConfig } from "prisma/config";
|
||||
export default defineConfig({
|
||||
earlyAccess: true,
|
||||
schema: path.join(__dirname, "prisma", "schema.prisma"),
|
||||
migrate: {
|
||||
async url() {
|
||||
return process.env.DATABASE_URL!;
|
||||
},
|
||||
},
|
||||
} as any);
|
||||
});
|
||||
|
||||
@@ -9,6 +9,7 @@ generator client {
|
||||
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
url = env("DATABASE_URL")
|
||||
}
|
||||
|
||||
// ======================== ENUMS =============================
|
||||
|
||||
@@ -43,4 +43,27 @@ export const auth = betterAuth({
|
||||
expiresIn: 60 * 60 * 24 * 7, // 7 days
|
||||
updateAge: 60 * 60 * 24, // 1 day
|
||||
},
|
||||
user: {
|
||||
additionalFields: {
|
||||
role: {
|
||||
type: "string",
|
||||
defaultValue: "HOST",
|
||||
input: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
databaseHooks: {
|
||||
user: {
|
||||
create: {
|
||||
before: async (user) => {
|
||||
// Первый зарегистрированный пользователь → ADMIN
|
||||
const count = await prisma.user.count();
|
||||
if (count === 0) {
|
||||
return { data: { ...user, role: "ADMIN" } };
|
||||
}
|
||||
return { data: { ...user, role: "HOST" } };
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user