CoolFace
Apppublic

KillerKing93/Transformers-TextEngine-OpenAPI

sourceHugging Faceupdated 10mo agoView on Hugging Face
0likes
seed_data.py356 linesDownload Raw Back to root
1#!/usr/bin/env python2# -*- coding: utf-8 -*-3"""4Sample data seeding script for AI Marketplace Platform5 6Usage:7    python seed_data.py8 9This script populates the database with sample suppliers, products, and users10for testing and demonstration purposes.11"""12 13import os14import sys15from datetime import datetime16 17# Ensure we can import from the current directory18sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))19 20from database import SessionLocal, init_db21from models import Supplier, Product, User22 23 24def seed_database():25    """Seed the database with sample data."""26 27    print("[Seed] Initializing database...")28    init_db()29 30    db = SessionLocal()31 32    try:33        # Check if data already exists34        existing_suppliers = db.query(Supplier).count()35        if existing_suppliers > 0:36            print(f"[Seed] Database already has {existing_suppliers} suppliers. Skipping seed.")37            response = input("Do you want to clear and re-seed? (yes/no): ")38            if response.lower() != "yes":39                print("[Seed] Aborted.")40                return41            else:42                # Clear existing data43                print("[Seed] Clearing existing data...")44                db.query(Product).delete()45                db.query(Supplier).delete()46                db.query(User).delete()47                db.commit()48                print("[Seed] Cleared.")49 50        # Seed Suppliers51        print("[Seed] Creating suppliers...")52 53        suppliers_data = [54            {55                "name": "Budi Santoso",56                "business_name": "Toko Komputer Jakarta",57                "email": "budi@tokokomputer.com",58                "phone": "+62812345678",59                "address": "Jl. Sudirman No. 123, Jakarta Pusat",60                "latitude": -6.2088,61                "longitude": 106.8456,62                "city": "Jakarta",63                "province": "DKI Jakarta"64            },65            {66                "name": "Siti Rahma",67                "business_name": "Elektronik Bandung",68                "email": "siti@elektronikbdg.com",69                "phone": "+62856789012",70                "address": "Jl. Braga No. 45, Bandung",71                "latitude": -6.9175,72                "longitude": 107.6191,73                "city": "Bandung",74                "province": "Jawa Barat"75            },76            {77                "name": "Ahmad Fauzi",78                "business_name": "Tech Store Surabaya",79                "email": "ahmad@techstoresby.com",80                "phone": "+62877123456",81                "address": "Jl. Tunjungan No. 88, Surabaya",82                "latitude": -7.2575,83                "longitude": 112.7521,84                "city": "Surabaya",85                "province": "Jawa Timur"86            },87            {88                "name": "Dewi Lestari",89                "business_name": "Gadget Center Jakarta Selatan",90                "email": "dewi@gadgetcenter.com",91                "phone": "+62899887766",92                "address": "Jl. Fatmawati No. 200, Jakarta Selatan",93                "latitude": -6.2910,94                "longitude": 106.7968,95                "city": "Jakarta Selatan",96                "province": "DKI Jakarta"97            },98            {99                "name": "Rudi Hartono",100                "business_name": "Computer World Medan",101                "email": "rudi@computerworld.com",102                "phone": "+62811223344",103                "address": "Jl. Gatot Subroto No. 100, Medan",104                "latitude": 3.5952,105                "longitude": 98.6722,106                "city": "Medan",107                "province": "Sumatera Utara"108            }109        ]110 111        suppliers = []112        for data in suppliers_data:113            supplier = Supplier(**data)114            db.add(supplier)115            suppliers.append(supplier)116 117        db.commit()118        print(f"[Seed] Created {len(suppliers)} suppliers")119 120        # Seed Products121        print("[Seed] Creating products...")122 123        products_data = [124            # Jakarta - Toko Komputer125            {126                "supplier": suppliers[0],127                "name": "Laptop ASUS ROG Strix G15",128                "description": "Gaming laptop with RTX 4060, Ryzen 7 6800H, 16GB RAM, 512GB SSD",129                "price": 15999000,130                "stock_quantity": 5,131                "category": "laptop",132                "tags": "gaming,asus,ryzen,rtx",133                "sku": "ASU-ROG-G15-001"134            },135            {136                "supplier": suppliers[0],137                "name": "Monitor LG 27' 4K UHD",138                "description": "27 inch 4K monitor, IPS panel, HDR10 support",139                "price": 4500000,140                "stock_quantity": 10,141                "category": "monitor",142                "tags": "monitor,lg,4k,hdr",143                "sku": "LG-MON-27-4K"144            },145            {146                "supplier": suppliers[0],147                "name": "Keyboard Mechanical Logitech G Pro",148                "description": "TKL mechanical keyboard with GX Blue switches",149                "price": 1850000,150                "stock_quantity": 15,151                "category": "keyboard",152                "tags": "keyboard,logitech,mechanical,gaming",153                "sku": "LOG-KEY-GPR"154            },155            # Bandung - Elektronik156            {157                "supplier": suppliers[1],158                "name": "Laptop Lenovo ThinkPad X1 Carbon",159                "description": "Business laptop, Intel i7-1365U, 16GB RAM, 512GB SSD, 14 inch",160                "price": 22500000,161                "stock_quantity": 3,162                "category": "laptop",163                "tags": "business,lenovo,thinkpad,intel",164                "sku": "LEN-X1C-G11"165            },166            {167                "supplier": suppliers[1],168                "name": "Smartphone Samsung Galaxy S24",169                "description": "Flagship smartphone, Snapdragon 8 Gen 3, 8GB RAM, 256GB",170                "price": 13999000,171                "stock_quantity": 8,172                "category": "smartphone",173                "tags": "smartphone,samsung,flagship",174                "sku": "SAM-S24-256"175            },176            {177                "supplier": suppliers[1],178                "name": "Tablet iPad Air M2",179                "description": "11 inch iPad Air with M2 chip, 128GB WiFi",180                "price": 9499000,181                "stock_quantity": 6,182                "category": "tablet",183                "tags": "tablet,ipad,apple,m2",184                "sku": "APL-IPA-M2-128"185            },186            # Surabaya - Tech Store187            {188                "supplier": suppliers[2],189                "name": "Laptop HP Pavilion Gaming",190                "description": "Gaming laptop, Intel i5-12500H, RTX 3050, 16GB RAM, 512GB SSD",191                "price": 11999000,192                "stock_quantity": 7,193                "category": "laptop",194                "tags": "gaming,hp,intel,rtx3050",195                "sku": "HP-PAV-GAM-001"196            },197            {198                "supplier": suppliers[2],199                "name": "Mouse Logitech G502 HERO",200                "description": "Gaming mouse with 25K DPI sensor, customizable weights",201                "price": 550000,202                "stock_quantity": 20,203                "category": "mouse",204                "tags": "mouse,logitech,gaming",205                "sku": "LOG-G502-HERO"206            },207            {208                "supplier": suppliers[2],209                "name": "Printer Epson EcoTank L3250",210                "description": "All-in-one printer with WiFi, scanner, copier",211                "price": 2850000,212                "stock_quantity": 5,213                "category": "printer",214                "tags": "printer,epson,ecotank,wifi",215                "sku": "EPS-L3250-ECO"216            },217            # Jakarta Selatan - Gadget Center218            {219                "supplier": suppliers[3],220                "name": "Laptop MacBook Air M3",221                "description": "13 inch MacBook Air, M3 chip, 8GB RAM, 256GB SSD",222                "price": 17999000,223                "stock_quantity": 4,224                "category": "laptop",225                "tags": "laptop,apple,macbook,m3",226                "sku": "APL-MBA-M3-256"227            },228            {229                "supplier": suppliers[3],230                "name": "Smartphone iPhone 15 Pro",231                "description": "Pro smartphone with A17 Pro chip, 128GB, Titanium",232                "price": 19999000,233                "stock_quantity": 5,234                "category": "smartphone",235                "tags": "smartphone,iphone,apple,pro",236                "sku": "APL-IP15P-128"237            },238            {239                "supplier": suppliers[3],240                "name": "Monitor Samsung Odyssey G7",241                "description": "32 inch curved gaming monitor, 240Hz, 1440p, QLED",242                "price": 8999000,243                "stock_quantity": 3,244                "category": "monitor",245                "tags": "monitor,samsung,gaming,curved,240hz",246                "sku": "SAM-ODY-G7-32"247            },248            # Medan - Computer World249            {250                "supplier": suppliers[4],251                "name": "Laptop Acer Aspire 5",252                "description": "Budget laptop, Intel i5-1235U, 8GB RAM, 512GB SSD, 15.6 inch",253                "price": 7999000,254                "stock_quantity": 12,255                "category": "laptop",256                "tags": "laptop,acer,budget,intel",257                "sku": "ACR-ASP5-I5"258            },259            {260                "supplier": suppliers[4],261                "name": "Smartphone Xiaomi Redmi Note 13 Pro",262                "description": "Mid-range smartphone, Snapdragon 7s Gen 2, 8GB RAM, 256GB",263                "price": 4299000,264                "stock_quantity": 15,265                "category": "smartphone",266                "tags": "smartphone,xiaomi,redmi,midrange",267                "sku": "XIA-RN13P-256"268            },269            {270                "supplier": suppliers[4],271                "name": "Keyboard Razer BlackWidow V3",272                "description": "Full-size mechanical keyboard, Razer Green switches, RGB",273                "price": 1550000,274                "stock_quantity": 8,275                "category": "keyboard",276                "tags": "keyboard,razer,mechanical,rgb",277                "sku": "RAZ-BW-V3"278            }279        ]280 281        for data in products_data:282            supplier = data.pop("supplier")283            product = Product(supplier_id=supplier.id, **data)284            db.add(product)285 286        db.commit()287        print(f"[Seed] Created {len(products_data)} products")288 289        # Seed Users290        print("[Seed] Creating users...")291 292        users_data = [293            {294                "name": "John Doe",295                "email": "john.doe@email.com",296                "phone": "+62812111222",297                "latitude": -6.2088,298                "longitude": 106.8456,299                "city": "Jakarta",300                "province": "DKI Jakarta",301                "ai_access_enabled": True  # Premium user302            },303            {304                "name": "Jane Smith",305                "email": "jane.smith@email.com",306                "phone": "+62856333444",307                "latitude": -6.9175,308                "longitude": 107.6191,309                "city": "Bandung",310                "province": "Jawa Barat",311                "ai_access_enabled": True  # Premium user312            },313            {314                "name": "Bob Wilson",315                "email": "bob.wilson@email.com",316                "phone": "+62877555666",317                "latitude": -7.2575,318                "longitude": 112.7521,319                "city": "Surabaya",320                "province": "Jawa Timur",321                "ai_access_enabled": False  # Regular user322            }323        ]324 325        for data in users_data:326            user = User(**data)327            db.add(user)328 329        db.commit()330        print(f"[Seed] Created {len(users_data)} users")331 332        print("\n[Seed] ✅ Database seeding completed successfully!")333        print("\n[Seed] Summary:")334        print(f"  - Suppliers: {len(suppliers)}")335        print(f"  - Products: {len(products_data)}")336        print(f"  - Users: {len(users_data)}")337        print("\n[Seed] Sample data:")338        print("  User with AI access:")339        print(f"    - Email: john.doe@email.com (user_id: 1, Jakarta)")340        print(f"    - Email: jane.smith@email.com (user_id: 2, Bandung)")341        print("\n  Try AI search:")342        print('    curl -X POST http://localhost:3000/api/chat/search \\')343        print('      -H "Content-Type: application/json" \\')344        print('      -d \'{"user_id": 1, "query": "laptop gaming Jakarta budget 12 juta"}\'')345 346    except Exception as e:347        print(f"[Seed] ❌ Error during seeding: {e}")348        db.rollback()349        raise350    finally:351        db.close()352 353 354if __name__ == "__main__":355    seed_database()356