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() {
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
}
}
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,
});
}
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 () => {
@@ -13,66 +13,66 @@
// console.error(" MongoDB Achievements connection error:", error);
// }
// };
// const connectToAchievementsDB = async () => {
// if (mongoose.connection.readyState >= 1) {
// console.log("✅ Already connected to Achievements MongoDB");
// 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;
});
const connectToAchievementsDB = async () => {
if (mongoose.connection.readyState >= 1) {
console.log("✅ Already connected to Achievements MongoDB");
return;
}
try {
cached.conn = await cached.promise;
} catch (e) {
cached.promise = null;
throw e;
await mongoose.connect(process.env.MongoURL, {
dbName: "achievementDB",
});
console.log("✅ Connected to Achievements MongoDB");
} catch (error) {
console.error("❌ MongoDB Achievements connection error:", error);
}
return cached.conn;
}
};
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;

View File

@@ -18,4 +18,4 @@ const achievementSchema = new mongoose.Schema(
);
export default mongoose.models.achievements ||
mongoose.model("achievements", achievementSchema);
mongoose.model("achievements", achievementSchema);