Files
TurboTrades/seed.js
2026-01-10 04:57:43 +00:00

386 lines
14 KiB
JavaScript

import mongoose from 'mongoose';
import dotenv from 'dotenv';
import Item from './models/Item.js';
import User from './models/User.js';
dotenv.config();
// Sample CS2 skins data
const cs2Items = [
// Rifles
{
name: 'AK-47 | Redline',
description: 'Classic red design with a sleek finish',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot7HxfDhjxszJemkV09-5lpKKqPrxN7LEm1Rd6dd2j6eQ9N2t2wKw-kttYTihdoGRIw4_YV3Y_lC3kOjxxcjrEV_ZEg/330x192',
game: 'cs2',
category: 'rifles',
rarity: 'legendary',
wear: 'ft',
float: 0.23,
statTrak: false,
price: 45.99,
featured: true,
},
{
name: 'M4A4 | Howl',
description: 'Contraband item with exclusive wolf design',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpou-6kejhjxszFJQJD_9W7m5a0mvLwOq7c2GpQ6sFOhuDG_Zi72gGw-ERsYTygJ4CSe1BoYAvY_QK3xrq6hZG06p_ImSFn7yAr7SqJyhLihRpSLrs4TpEbkg/330x192',
game: 'cs2',
category: 'rifles',
rarity: 'exceedingly',
wear: 'fn',
float: 0.03,
statTrak: false,
price: 2499.99,
featured: true,
},
{
name: 'AK-47 | Fire Serpent',
description: 'Legendary serpent design in vibrant colors',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot7HxfDhjxszJemkV09-5lpKKqPv1Ia_ummJW4NE_3e3Ao9rxjALkrUtoam2hIIPGd1U5ZAvR_lC8xr_th5W6vcvKnHJnuSE8pSGKoGZ3O6Y/330x192',
game: 'cs2',
category: 'rifles',
rarity: 'legendary',
wear: 'mw',
float: 0.12,
statTrak: false,
price: 1199.99,
featured: true,
},
{
name: 'AWP | Dragon Lore',
description: 'The most iconic AWP skin with dragon artwork',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot621FAR17PLfYQJD_9W7m5a0mvLwOq7c2G5V7Zx0teXI8oTht1i1uRQ5fTumcYaQdAdtYlnW-Vm_xey91JLutczXiSw0vR8bWyU/330x192',
game: 'cs2',
category: 'rifles',
rarity: 'exceedingly',
wear: 'fn',
float: 0.01,
statTrak: false,
price: 8999.99,
featured: true,
},
{
name: 'M4A1-S | Hyper Beast',
description: 'Vibrant beast design with neon colors',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpou-6kejhz2v_Nfz5H_uO1gb-Gw_alDL_CmHpJ18h0juDU-MKki1ex-RBoZ2_3I4ORdQI-NAnY_gK9wbq6hMe1ot2XngNbCEGb/330x192',
game: 'cs2',
category: 'rifles',
rarity: 'legendary',
wear: 'ft',
float: 0.18,
statTrak: true,
price: 89.99,
featured: false,
},
// Pistols
{
name: 'Desert Eagle | Blaze',
description: 'Fiery orange design on a powerful handgun',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgposr-kLAtl7PLZTjlH_9mkgIGbksj5Nr_Yg2Yf7cRjiOXE_Y3wjgLs_UNra2zxdoOVcgJoZ1rU-lDrw-rshcC-7s_Lmydh7XIn4HeLnhGyhQYMMLJIKHOaVg/330x192',
game: 'cs2',
category: 'pistols',
rarity: 'legendary',
wear: 'fn',
float: 0.01,
statTrak: false,
price: 499.99,
featured: true,
},
{
name: 'Glock-18 | Fade',
description: 'Beautiful fade pattern in multiple colors',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgposbaqKAxf0Ob3djFN79fnzL-YgPD1Pb_ummJW4NE_2LnE8d7w3lDl-UJlYzz0doOVdVA2MgyFqFK4krq50Ja1vcmdn3Jh6SF2pSGKMZuMnP8/330x192',
game: 'cs2',
category: 'pistols',
rarity: 'legendary',
wear: 'fn',
float: 0.03,
statTrak: false,
price: 299.99,
featured: false,
},
{
name: 'USP-S | Kill Confirmed',
description: 'Skull design with red accents',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpoo6m1FBRp3_bGcjhQ09-jq5WYh8j6OrzZglRd4cJ5nqeYpdvzjFfi-Us5Mj-mJoPGewA9aVrQ_VK4xObo0JDotJvKznZluT5iuyiPvf4lhQ/330x192',
game: 'cs2',
category: 'pistols',
rarity: 'legendary',
wear: 'mw',
float: 0.08,
statTrak: true,
price: 79.99,
featured: false,
},
{
name: 'P250 | Asiimov',
description: 'Futuristic white and orange design',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpopujwezhjxszYI2gS09-5lpKKqPrxN7LEm1Rd6dd2j6fA8I322AzmqBJoZGr2IoGUcgU-YQ3S_VK3xejxxcjrShWpDcs/330x192',
game: 'cs2',
category: 'pistols',
rarity: 'mythical',
wear: 'ft',
float: 0.25,
statTrak: false,
price: 24.99,
featured: false,
},
// Knives
{
name: 'Karambit | Fade',
description: 'Premium karambit with fade pattern',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpovbSsLQJf2PLacDBA5ciJlY20k_jkI7fUhFRd4cJ5nqfE99mijQyx-UZuaj-md4SUdAI5aAnT_VDtw-3ng5K6uJ-dyXQx6SYqsXbdnwv330_t2VNNmQ/330x192',
game: 'cs2',
category: 'knives',
rarity: 'exceedingly',
wear: 'fn',
float: 0.01,
statTrak: false,
price: 1899.99,
featured: true,
},
{
name: 'Butterfly Knife | Doppler',
description: 'Butterfly knife with doppler phase pattern',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpovbSsLQJf0ebcZThQ6tCvq4GGqPD1PrbEhFRd4cJ5nqfD99Tx2gTiqhBoYmimI4WSdw45ZQyE_wW_leq90JG_uMjXiSw0RXdg4dU/330x192',
game: 'cs2',
category: 'knives',
rarity: 'exceedingly',
wear: 'fn',
float: 0.02,
statTrak: false,
price: 1599.99,
featured: true,
},
{
name: 'M9 Bayonet | Tiger Tooth',
description: 'M9 Bayonet with tiger stripe pattern',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpovbSsLQJf3qr3czxb49KzgL-KksjnMrbeqWNU6dNoxOqQpI-s3AXjqEo9ZWmlJI-cIFc4MliC_wK-x73qm9bi64tFrAo8/330x192',
game: 'cs2',
category: 'knives',
rarity: 'exceedingly',
wear: 'fn',
float: 0.01,
statTrak: true,
price: 899.99,
featured: false,
},
// Gloves
{
name: 'Sport Gloves | Pandora\'s Box',
description: 'Purple sport gloves with unique pattern',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DAQ1JmMR1osbaqPQJz7ODYfi9W9eOmgZKbkuXLPr7Vn35cppYi3bzH9I3x2gXt-xVoam2hcoGUJgM7MlqG_1C3w7i71JC0upnPmCRk6HIj7SmOzhapwUYbjhwZJJE/330x192',
game: 'cs2',
category: 'gloves',
rarity: 'exceedingly',
wear: 'ft',
float: 0.15,
statTrak: false,
price: 899.99,
featured: false,
},
{
name: 'Driver Gloves | Crimson Weave',
description: 'Red woven driver gloves',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DAQ1h3LAVbv6mxFABs3OXNYgJR_Nm1nYGHnuTgDKvYm25u4MBwnPCPo4qmigXmrxBvZzjyJ4SccwE_ZgrZ8lG2wea5jZDquZTXiSw0NMmh4j8/330x192',
game: 'cs2',
category: 'gloves',
rarity: 'exceedingly',
wear: 'mw',
float: 0.14,
statTrak: false,
price: 699.99,
featured: false,
},
// More affordable items
{
name: 'AK-47 | Vulcan',
description: 'Sci-fi themed AK-47 skin',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot7HxfDhjxszJemkV09-5lpKKqPv9NLPF2G1Q_txym9bJ8I3jkRqyrEtlZm2mcYHHdQ47YlCB_wXqk-i-0se5vJ_ImyY3vCkg7SzYyxepwUYbE3v8o_Y/330x192',
game: 'cs2',
category: 'rifles',
rarity: 'legendary',
wear: 'ft',
float: 0.22,
statTrak: false,
price: 32.99,
featured: false,
},
{
name: 'AWP | Asiimov',
description: 'Popular futuristic AWP design',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot621FAR17PLfYQJD_9W7m5a0mvLwOq7c2GpTsJEl2rvHrYqljVe1-hE_Mjv1dY-dIw8-MFDS-VW-kua6hMO5vJrXiSw0kqz-lUc/330x192',
game: 'cs2',
category: 'rifles',
rarity: 'legendary',
wear: 'ft',
float: 0.26,
statTrak: false,
price: 54.99,
featured: false,
},
{
name: 'M4A4 | Desolate Space',
description: 'Dark space-themed design',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpou-6kejhjxszFJQJD_9W7m5a0mvLwOq7cqWZU7Mxkh9bN9J7yjRrhrRVvZW_0do-RelU6aF2C-Vm8xr_q08W_tJvNz3F9-n51BgbKmXI/330x192',
game: 'cs2',
category: 'rifles',
rarity: 'mythical',
wear: 'mw',
float: 0.11,
statTrak: false,
price: 19.99,
featured: false,
},
{
name: 'AK-47 | Neon Rider',
description: 'Vibrant neon design with rider artwork',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpot7HxfDhjxszJemkV086jloKOhOP7Ia_um25V4dB8teXI8oThxgTnrRY9Nm37IoCRdlA4ZQrV-gC7w-bv15G1vJvIzSY1uidz4SuPnxGpwUYbLnf4SXo/330x192',
game: 'cs2',
category: 'rifles',
rarity: 'mythical',
wear: 'mw',
float: 0.09,
statTrak: true,
price: 29.99,
featured: false,
},
{
name: 'MAC-10 | Neon Rider',
description: 'Colorful neon themed SMG',
image: 'https://community.cloudflare.steamstatic.com/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpou7umeldf0Ob3fDxBvYyJmYGbhP_kI7fUhFRd4cJ5nqfEoNin2lXirRJqZGn7cYGRdg5taQ6GqQfvx-y51J-4vJXOn3QyuHZzsX_ZnBaqwUYbwKM3r2A/330x192',
game: 'cs2',
category: 'smgs',
rarity: 'mythical',
wear: 'fn',
float: 0.05,
statTrak: false,
price: 12.99,
featured: false,
},
];
// Sample Rust items
const rustItems = [
{
name: 'AK-47 | Glory',
description: 'Legendary AK skin with intricate design',
image: 'https://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXA/330x192',
game: 'rust',
category: 'rifles',
rarity: 'legendary',
wear: null,
float: null,
statTrak: false,
price: 89.99,
featured: false,
},
{
name: 'Metal Facemask | Red Hazmat',
description: 'Red hazmat themed facemask',
image: 'https://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXA/330x192',
game: 'rust',
category: 'other',
rarity: 'rare',
wear: null,
float: null,
statTrak: false,
price: 24.99,
featured: false,
},
{
name: 'Python Revolver | Tempered',
description: 'Blue tempered Python revolver skin',
image: 'https://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXA/330x192',
game: 'rust',
category: 'pistols',
rarity: 'mythical',
wear: null,
float: null,
statTrak: false,
price: 45.99,
featured: false,
},
{
name: 'MP5 | Tempered',
description: 'Blue steel MP5 skin',
image: 'https://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXA/330x192',
game: 'rust',
category: 'smgs',
rarity: 'rare',
wear: null,
float: null,
statTrak: false,
price: 19.99,
featured: false,
},
];
async function seedDatabase() {
try {
// Connect to MongoDB
await mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/turbotrades');
console.log('✅ Connected to MongoDB');
// Clear existing items
await Item.deleteMany({});
console.log('🗑️ Cleared existing items');
// Find or create a default seller (admin user)
let seller = await User.findOne({ staffLevel: { $gte: 3 } });
if (!seller) {
// Create a default admin user if none exists
seller = await User.create({
username: 'TurboTrades Admin',
steamId: '76561198000000000',
avatar: 'https://avatars.steamstatic.com/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg',
staffLevel: 3,
balance: 100000,
tradeUrl: 'https://steamcommunity.com/tradeoffer/new/?partner=000000000&token=XXXXXXXX',
});
console.log('👤 Created default admin user');
}
// Add seller ID to all items
const allItems = [...cs2Items, ...rustItems].map(item => ({
...item,
seller: seller._id,
listedAt: new Date(Date.now() - Math.random() * 30 * 24 * 60 * 60 * 1000), // Random date within last 30 days
}));
// Insert items
const insertedItems = await Item.insertMany(allItems);
console.log(`✅ Added ${insertedItems.length} items to the database`);
// Display summary
console.log('\n📊 Summary:');
console.log(` CS2 Items: ${cs2Items.length}`);
console.log(` Rust Items: ${rustItems.length}`);
console.log(` Total Items: ${insertedItems.length}`);
console.log(` Featured Items: ${insertedItems.filter(i => i.featured).length}`);
const totalValue = insertedItems.reduce((sum, item) => sum + item.price, 0);
console.log(` Total Marketplace Value: $${totalValue.toFixed(2)}`);
console.log('\n🎉 Database seeded successfully!');
console.log('\nYou can now start the backend and view items in the frontend.');
} catch (error) {
console.error('❌ Error seeding database:', error);
process.exit(1);
} finally {
await mongoose.connection.close();
console.log('\n👋 Disconnected from MongoDB');
process.exit(0);
}
}
// Run the seed function
seedDatabase();