77 lines
No EOL
2.3 KiB
TypeScript
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() |