This commit is contained in:
rmac
2026-01-14 17:43:58 +00:00
parent 289d635a83
commit 46b15e1292
5 changed files with 24 additions and 19 deletions

View File

@@ -36,7 +36,7 @@ export async function compile(source: string, options?: CompileOptions): Promise
return {
code: result.code,
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/prefer-nullish-coalescing
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
map: (result.map !== null && result.map !== undefined && result.map !== '') ? result.map : undefined,
}
} catch (error) {

View File

@@ -6,8 +6,8 @@
import { PrismaClient } from '@prisma/client'
import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3'
const globalForPrisma = globalThis as unknown as {
prisma: PrismaClient | undefined
const globalForPrisma = globalThis as {
prisma?: PrismaClient
}
const isTestEnv = process.env.NODE_ENV === 'test' || process.env.VITEST === 'true'
@@ -32,9 +32,10 @@ const createMockPrisma = (): PrismaClient => {
const createIntegrationPrisma = (): PrismaClient => {
// For integration tests, use in-memory database via adapter factory
const adapter = new PrismaBetterSqlite3({ url: ':memory:' })
return new PrismaClient({ adapter })
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
return new PrismaClient({ adapter }) as unknown as PrismaClient
}
const createProductionPrisma = (): PrismaClient => {
@@ -54,16 +55,17 @@ const createProductionPrisma = (): PrismaClient => {
try {
// For Prisma 7, PrismaBetterSqlite3 is a FACTORY that takes config with url, not a client instance
const adapter = new PrismaBetterSqlite3({ url: databaseUrl })
console.warn('[Prisma] Adapter factory created successfully')
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment
const client = new PrismaClient({
adapter,
log: process.env.NODE_ENV === 'development' ? ['error', 'warn', 'query'] : ['error'],
})
}) as unknown as PrismaClient
console.warn('[Prisma] PrismaClient created successfully')
return client
} catch (error) {
console.error('[Prisma] Error creating Prisma client:', error)
@@ -71,13 +73,16 @@ const createProductionPrisma = (): PrismaClient => {
}
}
export const prisma =
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
export const prisma = (
globalForPrisma.prisma ??
(isTestEnv
? (isIntegrationTest ? createIntegrationPrisma() : createMockPrisma())
: createProductionPrisma())
) as PrismaClient
if (process.env.NODE_ENV !== 'production' && (!isTestEnv || isIntegrationTest)) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
globalForPrisma.prisma = prisma
}

View File

@@ -5,6 +5,7 @@ import { prisma } from '../../config/prisma'
*/
export async function initializeDatabase(): Promise<void> {
try {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
await prisma.$connect()
// Database initialized successfully
} catch (error) {

View File

@@ -85,7 +85,7 @@ export async function authenticate(
const user = await getCurrentUser()
// Check if user is authenticated
if (user === null || user === undefined) {
if (user === null) {
return {
success: false,
error: NextResponse.json(
@@ -112,8 +112,7 @@ export async function authenticate(
}
// Run custom permission check if provided
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (customCheck !== null && customCheck !== undefined && !customCheck(user)) {
if (customCheck !== undefined && !customCheck(user)) {
return {
success: false,
error: NextResponse.json(
@@ -163,11 +162,10 @@ export async function requireAuth(
options: AuthMiddlewareOptions = {}
): Promise<CurrentUser> {
const { success, user, error } = await authenticate(request, options)
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (!success || user === null || user === undefined) {
if (!success) {
throw new Error(error !== undefined ? 'Authentication failed' : 'Unknown authentication error')
}
return user
return user as CurrentUser
}

View File

@@ -6,6 +6,7 @@ import type { PageConfig } from '../types/level-types'
import { prisma } from '@/lib/config/prisma'
export async function loadPageFromDb(path: string, tenantId?: string): Promise<PageConfig | null> {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
const page = await prisma.pageConfig.findFirst({
where: {
path,