Add missing Payment model and database connection utilities
- Created Payment model with mongoose schema for cospend functionality - Added database connection utilities with proper connection caching - Fixed build errors related to missing imports - Build now succeeds and dev server starts correctly 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
		
							
								
								
									
										44
									
								
								src/lib/db/db.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/lib/db/db.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
import mongoose from 'mongoose';
 | 
			
		||||
 | 
			
		||||
const MONGODB_URI = process.env.MONGODB_URI || 'mongodb://localhost:27017/recipes';
 | 
			
		||||
 | 
			
		||||
if (!MONGODB_URI) {
 | 
			
		||||
  throw new Error('Please define the MONGODB_URI environment variable inside .env.local');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Global is used here to maintain a cached connection across hot reloads
 | 
			
		||||
 * in development. This prevents connections growing exponentially
 | 
			
		||||
 * during API Route usage.
 | 
			
		||||
 */
 | 
			
		||||
let cached = (global as any).mongoose;
 | 
			
		||||
 | 
			
		||||
if (!cached) {
 | 
			
		||||
  cached = (global as any).mongoose = { conn: null, promise: null };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function dbConnect() {
 | 
			
		||||
  if (cached.conn) {
 | 
			
		||||
    return cached.conn;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (!cached.promise) {
 | 
			
		||||
    const opts = {
 | 
			
		||||
      bufferCommands: false,
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    cached.promise = mongoose.connect(MONGODB_URI, opts).then((mongoose) => {
 | 
			
		||||
      return mongoose;
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
  cached.conn = await cached.promise;
 | 
			
		||||
  return cached.conn;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export async function dbDisconnect() {
 | 
			
		||||
  if (cached.conn) {
 | 
			
		||||
    await cached.conn.disconnect();
 | 
			
		||||
    cached.conn = null;
 | 
			
		||||
    cached.promise = null;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								src/lib/models/Payment.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/lib/models/Payment.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
import mongoose from 'mongoose';
 | 
			
		||||
 | 
			
		||||
const paymentSchema = new mongoose.Schema({
 | 
			
		||||
  paid_by: { type: String, required: true },
 | 
			
		||||
  total_amount: { type: Number, required: true },
 | 
			
		||||
  for_self: { type: Number, default: 0 },
 | 
			
		||||
  for_other: { type: Number, default: 0 },
 | 
			
		||||
  currency: { type: String, default: 'CHF' },
 | 
			
		||||
  description: String,
 | 
			
		||||
  date: { type: Date, default: Date.now },
 | 
			
		||||
  receipt_image: String
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
export const Payment = mongoose.models.Payment || mongoose.model('Payment', paymentSchema);
 | 
			
		||||
		Reference in New Issue
	
	Block a user