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