Agent 2 - Database Integration (P0 Critical): - Add Prisma ORM with PostgreSQL for persistent data storage - Create comprehensive database schema with 20+ models: - User & authentication models - Plant & lineage tracking - Transport events & supply chain - Vertical farming (farms, zones, batches, recipes) - Demand & market matching - Audit logging & blockchain storage - Implement complete database service layer (lib/db/): - users.ts: User CRUD with search and stats - plants.ts: Plant operations with lineage tracking - transport.ts: Transport events and carbon tracking - farms.ts: Vertical farm and crop batch management - demand.ts: Consumer preferences and market matching - audit.ts: Audit logging and blockchain integrity - Add PlantChainDB for database-backed blockchain - Create development seed script with sample data - Add database documentation (docs/DATABASE.md) - Update package.json with Prisma dependencies and scripts This provides the foundation for all other agents to build upon with persistent, scalable data storage.
27 lines
593 B
TypeScript
27 lines
593 B
TypeScript
/**
|
|
* Prisma Client Singleton
|
|
* Prevents multiple instances during development hot-reloading
|
|
*/
|
|
|
|
import { PrismaClient } from '@prisma/client';
|
|
|
|
declare global {
|
|
// eslint-disable-next-line no-var
|
|
var prisma: PrismaClient | undefined;
|
|
}
|
|
|
|
const prismaClientSingleton = () => {
|
|
return new PrismaClient({
|
|
log: process.env.NODE_ENV === 'development'
|
|
? ['query', 'error', 'warn']
|
|
: ['error'],
|
|
});
|
|
};
|
|
|
|
export const prisma = globalThis.prisma ?? prismaClientSingleton();
|
|
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
globalThis.prisma = prisma;
|
|
}
|
|
|
|
export default prisma;
|