pummmp.fun/scripts/database-reset.ts
2026-07-04 12:49:09 -07:00

77 lines
No EOL
2.3 KiB
TypeScript

import { MongoClient } from 'mongodb'
import * as dotenv from 'dotenv'
dotenv.config()
const MONGODB_URI = process.env.MONGODB_URI
if (!MONGODB_URI) {
console.error('Please define the MONGODB_URI environment variable in .env')
process.exit(1)
}
async function resetDatabase() {
const reason = process.argv.slice(2).join(' ') || 'inflated market'
let client: MongoClient | null = null;
try {
client = await MongoClient.connect(MONGODB_URI!)
const db = client.db('pummmpfun')
console.log('Starting database reset...')
// Delete all coins
console.log('Deleting all coins...')
const coinsResult = await db.collection('coins').deleteMany({})
console.log(`Deleted ${coinsResult.deletedCount} coins`)
// Delete all comments
console.log('Deleting all comments...')
const commentsResult = await db.collection('comments').deleteMany({})
console.log(`Deleted ${commentsResult.deletedCount} comments`)
// Delete all trades
console.log('Deleting all trades...')
const tradesResult = await db.collection('trades').deleteMany({})
console.log(`Deleted ${tradesResult.deletedCount} trades`)
// Delete all rains
console.log('Deleting all rains...')
const rainsResult = await db.collection('rains').deleteMany({})
console.log(`Deleted ${rainsResult.deletedCount} rains`)
// Reset user balances and portfolios (keep accounts and badges)
console.log('Resetting user balances and portfolios...')
const usersResult = await db.collection('users').updateMany(
{},
{
$set: {
balance: 5,
portfolio: []
}
}
)
console.log(`Reset ${usersResult.modifiedCount} users (matched ${usersResult.matchedCount})`)
// Set notice about the reset
const resetDate = new Date().toLocaleDateString()
const noticeMessage = `As of ${resetDate}, the database has been reset due to ${reason}.`
console.log('Setting reset notice...')
await db.collection('notices').insertOne({
message: noticeMessage,
reason: reason,
createdAt: new Date(),
updatedAt: new Date()
})
console.log('Reset notice set')
console.log('Database reset complete!')
} catch (error) {
console.error('Error during database reset:', error)
} finally {
if (client) await client.close()
}
}
resetDatabase()