achievements

This commit is contained in:
Ashwani Senapati
2025-11-29 17:39:17 +05:30
parent ba626fc700
commit 8afb5012b2
3 changed files with 104 additions and 104 deletions

View File

@@ -57,51 +57,51 @@ export async function POST(req) {
} }
} }
// export async function GET() {
// try {
// await connectToAchievementsDB();
// const achievements = await Achievement.find({}).sort({ createdAt: -1 });
// return new Response(JSON.stringify(achievements), { status: 200 });
// } catch (error) {
// console.error("❌ Error fetching achievements:", error);
// return new Response(JSON.stringify({ error: error.message }), {
// status: 500,
// });
// }
// }
// api/achievements/route.js
export async function GET() { export async function GET() {
const maxRetries = 3;
let lastError;
for (let i = 0; i < maxRetries; i++) {
try { try {
await connectToAchievementsDB(); await connectToAchievementsDB();
const achievements = await Achievement.find({}).sort({ createdAt: -1 });
const achievements = await Achievement.find({}) return new Response(JSON.stringify(achievements), { status: 200 });
.sort({ createdAt: -1 })
.lean()
.maxTimeMS(5000); // 5 second timeout
return new Response(JSON.stringify(achievements), {
status: 200,
headers: { 'Content-Type': 'application/json' }
});
} catch (error) { } catch (error) {
lastError = error; console.error("❌ Error fetching achievements:", error);
console.error(`❌ Attempt ${i + 1} failed:`, error); return new Response(JSON.stringify({ error: error.message }), {
status: 500,
if (i < maxRetries - 1) { });
await new Promise(resolve => setTimeout(resolve, 1000)); // Wait 1s before retry
} }
}
}
return new Response(
JSON.stringify({
error: "Failed to fetch achievements after retries",
details: lastError.message
}),
{ status: 500 }
);
} }
// api/achievements/route.js
// export async function GET() {
// const maxRetries = 3;
// let lastError;
// for (let i = 0; i < maxRetries; i++) {
// try {
// await connectToAchievementsDB();
// const achievements = await Achievement.find({})
// .sort({ createdAt: -1 })
// .lean()
// .maxTimeMS(5000); // 5 second timeout
// return new Response(JSON.stringify(achievements), {
// status: 200,
// headers: { 'Content-Type': 'application/json' }
// });
// } catch (error) {
// lastError = error;
// console.error(`❌ Attempt ${i + 1} failed:`, error);
// if (i < maxRetries - 1) {
// await new Promise(resolve => setTimeout(resolve, 1000)); // Wait 1s before retry
// }
// }
// }
// return new Response(
// JSON.stringify({
// error: "Failed to fetch achievements after retries",
// details: lastError.message
// }),
// { status: 500 }
// );
// }

View File

@@ -1,4 +1,4 @@
//import mongoose from "mongoose"; import mongoose from "mongoose";
// const connectToAchievementsDB = async () => { // const connectToAchievementsDB = async () => {
@@ -13,66 +13,66 @@
// console.error(" MongoDB Achievements connection error:", error); // console.error(" MongoDB Achievements connection error:", error);
// } // }
// }; // };
// const connectToAchievementsDB = async () => { const connectToAchievementsDB = async () => {
// if (mongoose.connection.readyState >= 1) { if (mongoose.connection.readyState >= 1) {
// console.log("✅ Already connected to Achievements MongoDB"); console.log("✅ Already connected to Achievements MongoDB");
// return; return;
// }
// try {
// await mongoose.connect(process.env.MongoURL, {
// dbName: "achievementDB",
// });
// console.log("✅ Connected to Achievements MongoDB");
// } catch (error) {
// console.error("❌ MongoDB Achievements connection error:", error);
// }
// };
// export default connectToAchievementsDB;
// lib/achievementsDB.js
import mongoose from "mongoose";
const MONGODB_URI = process.env.MongoURL;
if (!MONGODB_URI) {
throw new Error("Please define MONGODB_URI in .env.local");
}
let cached = global.mongoose;
if (!cached) {
cached = global.mongoose = { conn: null, promise: null };
}
async function connectToAchievementsDB() {
if (cached.conn) {
console.log("✅ Using cached database connection");
return cached.conn;
}
if (!cached.promise) {
const opts = {
bufferCommands: false,
maxPoolSize: 10, // Maintain up to 10 connections
serverSelectionTimeoutMS: 5000,
socketTimeoutMS: 45000,
};
cached.promise = mongoose.connect(MONGODB_URI, opts).then((mongoose) => {
console.log("✅ New database connection established");
return mongoose;
});
} }
try { try {
cached.conn = await cached.promise; await mongoose.connect(process.env.MongoURL, {
} catch (e) { dbName: "achievementDB",
cached.promise = null; });
throw e; console.log("✅ Connected to Achievements MongoDB");
} catch (error) {
console.error("❌ MongoDB Achievements connection error:", error);
} }
};
return cached.conn;
}
export default connectToAchievementsDB; export default connectToAchievementsDB;
// lib/achievementsDB.js
// import mongoose from "mongoose";
// const MONGODB_URI = process.env.MongoURL;
// if (!MONGODB_URI) {
// throw new Error("Please define MONGODB_URI in .env.local");
// }
// let cached = global.mongoose;
// if (!cached) {
// cached = global.mongoose = { conn: null, promise: null };
// }
// async function connectToAchievementsDB() {
// if (cached.conn) {
// console.log("✅ Using cached database connection");
// return cached.conn;
// }
// if (!cached.promise) {
// const opts = {
// bufferCommands: false,
// maxPoolSize: 10, // Maintain up to 10 connections
// serverSelectionTimeoutMS: 5000,
// socketTimeoutMS: 45000,
// };
// cached.promise = mongoose.connect(MONGODB_URI, opts).then((mongoose) => {
// console.log("✅ New database connection established");
// return mongoose;
// });
// }
// try {
// cached.conn = await cached.promise;
// } catch (e) {
// cached.promise = null;
// throw e;
// }
// return cached.conn;
// }
// export default connectToAchievementsDB;