From f67afd32dab71ea5eb67d5cb4b9a48ba42e592e4 Mon Sep 17 00:00:00 2001 From: AyrisAI Date: Thu, 23 Jul 2026 17:58:07 +0300 Subject: [PATCH] security: remove hardcoded DB credentials from code files --- lib/db.ts | 8 +++++--- prisma.config.ts | 2 +- prisma/seed.ts | 12 +++++++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/db.ts b/lib/db.ts index 1f3e1df..e8e1f3f 100644 --- a/lib/db.ts +++ b/lib/db.ts @@ -7,9 +7,11 @@ const globalForPrisma = globalThis as unknown as { }; function createPrismaClient(): PrismaClient { - const connectionString = - process.env.DATABASE_URL || - 'postgres://postgres:mBTWE2cDKGExtpktguD3HPe8y9Xr9kWFYdxV4WHQKISLLGoBAS4UdtfSCfXwvPpq@65.109.236.58:37298/postgres'; + const connectionString = process.env.DATABASE_URL; + + if (!connectionString) { + throw new Error('[DB] DATABASE_URL environment variable is not set!'); + } const pool = new Pool({ connectionString }); const adapter = new PrismaPg(pool); diff --git a/prisma.config.ts b/prisma.config.ts index 8b67f1c..48b40c4 100644 --- a/prisma.config.ts +++ b/prisma.config.ts @@ -2,6 +2,6 @@ import { defineConfig } from '@prisma/config'; export default defineConfig({ datasource: { - url: process.env.DATABASE_URL || 'postgres://postgres:mBTWE2cDKGExtpktguD3HPe8y9Xr9kWFYdxV4WHQKISLLGoBAS4UdtfSCfXwvPpq@65.109.236.58:37298/postgres', + url: process.env.DATABASE_URL, }, }); diff --git a/prisma/seed.ts b/prisma/seed.ts index 8e2c52a..9d9394a 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -2,9 +2,11 @@ import { Pool } from 'pg'; import { PrismaPg } from '@prisma/adapter-pg'; import { PrismaClient } from '@prisma/client'; -const connectionString = - process.env.DATABASE_URL || - 'postgres://postgres:mBTWE2cDKGExtpktguD3HPe8y9Xr9kWFYdxV4WHQKISLLGoBAS4UdtfSCfXwvPpq@65.109.236.58:37298/postgres'; +const connectionString = process.env.DATABASE_URL; + +if (!connectionString) { + throw new Error('[Seed] DATABASE_URL environment variable is not set!'); +} const pool = new Pool({ connectionString }); const adapter = new PrismaPg(pool); @@ -20,6 +22,7 @@ async function main() { await db.lesson.deleteMany(); await db.cheatsheetItem.deleteMany(); await db.cheatsheet.deleteMany(); + await db.prompt.deleteMany(); // Create Lessons await db.lesson.create({ @@ -93,13 +96,12 @@ async function main() { }); // Create Prompts - await db.prompt.deleteMany(); await db.prompt.create({ data: { slug: 'fullstack-nextjs-architect-prompt', title: 'Full-Stack Next.js 16 System Architect Prompt', category: 'System Architecture', - description: 'System prompt for building production-ready Next.js 16 App Router code with Server Actions and Prisma.', + description: 'System prompt for building production-ready Next.js 16 App Router code.', content: `You are a Senior Next.js 16 Architect. Always use TypeScript strict mode, App Router, proxy.ts for middleware, Server Actions with Zod validation, and Prisma ORM.`, tags: ['Next.js', 'System Prompt', 'AI Architecture'], isOpen: false,