achievements
This commit is contained in:
@@ -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 }
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user