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() {
|
||||
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 }
|
||||
// );
|
||||
// }
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -18,4 +18,4 @@ const achievementSchema = new mongoose.Schema(
|
||||
);
|
||||
|
||||
export default mongoose.models.achievements ||
|
||||
mongoose.model("achievements", achievementSchema);
|
||||
mongoose.model("achievements", achievementSchema);
|
||||
Reference in New Issue
Block a user