user management

This commit is contained in:
nBiqoz
2025-10-08 10:14:38 +02:00
parent 80f075d04d
commit 6e4dda0ecd
15 changed files with 1513 additions and 93 deletions

View File

@@ -4,9 +4,11 @@ import { getDatabase } from "@/lib/db/mongodb";
export async function POST() {
try {
const db = await getDatabase();
const CREDITS_TO_ADD = 5000000; // 5 millions de tokens
const CREDITS_TO_ADD = 3000000; // 3 millions de tokens
console.log(`🚀 DÉBUT: Ajout de ${CREDITS_TO_ADD.toLocaleString()} crédits à tous les utilisateurs`);
console.log(
`🚀 DÉBUT: Ajout de ${CREDITS_TO_ADD.toLocaleString()} crédits à tous les utilisateurs`
);
// Récupérer tous les utilisateurs existants
const users = await db.collection("users").find({}).toArray();
@@ -15,14 +17,14 @@ export async function POST() {
if (users.length === 0) {
return NextResponse.json({
success: false,
message: "Aucun utilisateur trouvé"
message: "Aucun utilisateur trouvé",
});
}
// Récupérer toutes les balances existantes
const existingBalances = await db.collection("balances").find({}).toArray();
const existingBalanceUserIds = new Set(
existingBalances.map(balance => balance.user.toString())
existingBalances.map((balance) => balance.user.toString())
);
console.log(`💰 Balances existantes: ${existingBalances.length}`);
@@ -34,21 +36,23 @@ export async function POST() {
// Pour chaque utilisateur
for (const user of users) {
const userId = user._id;
if (existingBalanceUserIds.has(userId.toString())) {
// Utilisateur a déjà une balance - ajouter les crédits
const updateResult = await db.collection("balances").updateOne(
{ user: userId },
{
{
$inc: { tokenCredits: CREDITS_TO_ADD },
$set: { lastRefill: new Date() }
$set: { lastRefill: new Date() },
}
);
if (updateResult.modifiedCount > 0) {
updatedCount++;
totalCreditsAdded += CREDITS_TO_ADD;
console.log(`✅ Crédits ajoutés pour l'utilisateur: ${user.email || user.name}`);
console.log(
`✅ Crédits ajoutés pour l'utilisateur: ${user.email || user.name}`
);
}
} else {
// Utilisateur n'a pas de balance - créer une nouvelle balance
@@ -60,20 +64,24 @@ export async function POST() {
refillAmount: 0,
refillIntervalUnit: "month",
refillIntervalValue: 1,
__v: 0
__v: 0,
};
await db.collection("balances").insertOne(newBalance);
createdCount++;
totalCreditsAdded += CREDITS_TO_ADD;
console.log(`🆕 Nouvelle balance créée pour: ${user.email || user.name}`);
console.log(
`🆕 Nouvelle balance créée pour: ${user.email || user.name}`
);
}
}
console.log(`✅ TERMINÉ:`);
console.log(`- Balances mises à jour: ${updatedCount}`);
console.log(`- Nouvelles balances créées: ${createdCount}`);
console.log(`- Total crédits ajoutés: ${totalCreditsAdded.toLocaleString()}`);
console.log(
`- Total crédits ajoutés: ${totalCreditsAdded.toLocaleString()}`
);
return NextResponse.json({
success: true,
@@ -82,17 +90,21 @@ export async function POST() {
updatedBalances: updatedCount,
createdBalances: createdCount,
creditsPerUser: CREDITS_TO_ADD,
totalCreditsAdded
totalCreditsAdded,
},
message: `${CREDITS_TO_ADD.toLocaleString()} crédits ajoutés à ${users.length} utilisateurs (${updatedCount} mis à jour, ${createdCount} créés)`
message: `${CREDITS_TO_ADD.toLocaleString()} crédits ajoutés à ${
users.length
} utilisateurs (${updatedCount} mis à jour, ${createdCount} créés)`,
});
} catch (error) {
console.error("Erreur lors de l'ajout des crédits:", error);
return NextResponse.json({
success: false,
error: "Erreur serveur lors de l'ajout des crédits"
}, { status: 500 });
return NextResponse.json(
{
success: false,
error: "Erreur serveur lors de l'ajout des crédits",
},
{ status: 500 }
);
}
}
@@ -104,8 +116,12 @@ export async function GET() {
const users = await db.collection("users").find({}).toArray();
const balances = await db.collection("balances").find({}).toArray();
const totalCredits = balances.reduce((sum, balance) => sum + (balance.tokenCredits || 0), 0);
const averageCredits = balances.length > 0 ? totalCredits / balances.length : 0;
const totalCredits = balances.reduce(
(sum, balance) => sum + (balance.tokenCredits || 0),
0
);
const averageCredits =
balances.length > 0 ? totalCredits / balances.length : 0;
return NextResponse.json({
statistics: {
@@ -113,12 +129,11 @@ export async function GET() {
totalBalances: balances.length,
totalCredits,
averageCredits: Math.round(averageCredits),
usersWithoutBalance: users.length - balances.length
}
usersWithoutBalance: users.length - balances.length,
},
});
} catch (error) {
console.error("Erreur lors de la récupération des statistiques:", error);
return NextResponse.json({ error: "Erreur serveur" }, { status: 500 });
}
}
}