386 lines
14 KiB
JavaScript
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();
|