# restructure_models.ps1 - Final working script using temp files Write-Host "๐Ÿ“„ Starting models restructure..." -ForegroundColor Cyan # Create new directory structure for models Write-Host "๐Ÿ“ Creating models directory structure..." -ForegroundColor Yellow $modelDirectories = @( "models\database", "models\api" ) foreach ($dir in $modelDirectories) { if (!(Test-Path $dir)) { New-Item -Path $dir -ItemType Directory -Force | Out-Null Write-Host " Created: $dir" -ForegroundColor Green } else { Write-Host " Exists: $dir" -ForegroundColor Gray } } # Backup original model files Write-Host "๐Ÿ’พ Backing up original model files..." -ForegroundColor Yellow if (!(Test-Path "models\backup")) { New-Item -Path "models\backup" -ItemType Directory -Force | Out-Null } $originalFiles = @("models\database_models.py", "models\api_models.py") foreach ($file in $originalFiles) { if (Test-Path $file) { Copy-Item $file "models\backup\" -Force Write-Host " Backed up: $(Split-Path $file -Leaf)" -ForegroundColor Gray } } Write-Host "๐Ÿ“„ Creating database model files..." -ForegroundColor Yellow # Function to create files using temp file approach function New-PythonFile { param( [string]$Path, [string]$TempContent ) $tempFile = [System.IO.Path]::GetTempFileName() $TempContent | Out-File $tempFile -Encoding UTF8 Move-Item $tempFile $Path -Force } # Create models/database/__init__.py Write-Host " Creating models\database\__init__.py..." -ForegroundColor Gray $initContent = @" # models/database/__init__.py from .user import User from .product import Product from .shop import Shop, ShopProduct from .stock import Stock from .marketplace import MarketplaceImportJob __all__ = [ "User", "Product", "Shop", "ShopProduct", "Stock", "MarketplaceImportJob", ] "@ New-PythonFile -Path "models\database\__init__.py" -TempContent $initContent # Create models/database/base.py Write-Host " Creating models\database\base.py..." -ForegroundColor Gray $baseContent = 'LS0gLS0tQkVHSU4gUFlUSE9OIENPREUtLS0tLQojIG1vZGVscy9kYXRhYmFzZS9iYXNlLnB5CmZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCmZyb20gc3FsYWxjaGVteSBpbXBvcnQgQ29sdW1uLCBEYXRlVGltZQpmcm9tIGFwcC5jb3JlLmRhdGFiYXNlIGltcG9ydCBCYXNlCgoKY2xhc3MgVGltZXN0YW1wTWl4aW46CiAgICAiIiJNaXhpbiB0byBhZGQgY3JlYXRlZF9hdCBhbmQgdXBkYXRlZF9hdCB0aW1lc3RhbXBzIHRvIG1vZGVscyIiIgogICAgY3JlYXRlZF9hdCA9IENvbHVtbihEYXRlVGltZSwgZGVmYXVsdD1kYXRldGltZS51dGNub3csIG51bGxhYmxlPUZhbHNlKQogICAgdXBkYXRlZF9hdCA9IENvbHVtbigKICAgICAgICBEYXRlVGltZSwgZGVmYXVsdD1kYXRldGltZS51dGNub3csIG9udXBkYXRlPWRhdGV0aW1lLnV0Y25vdywgbnVsbGFibGU9RmFsc2UKICAgICkKLS0tLS1FTkQgUFlUSE9OIENPREUtLS0tLQo=' $decodedBase = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($baseContent)) $decodedBase = $decodedBase.Replace('-----BEGIN PYTHON CODE-----', '').Replace('-----END PYTHON CODE-----', '').Trim() $decodedBase | Out-File "models\database\base.py" -Encoding UTF8 # Create models/database/user.py Write-Host " Creating models\database\user.py..." -ForegroundColor Gray $userContent = 'LS0tLS1CRUdJTiBQWVRIT04gQ09ERS0tLS0tCiMgbW9kZWxzL2RhdGFiYXNlL3VzZXIucHkKZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKZnJvbSBzcWxhbGNoZW15IGltcG9ydCBCb29sZWFuLCBDb2x1bW4sIERhdGVUaW1lLCBJbnRlZ2VyLCBTdHJpbmcKZnJvbSBzcWxhbGNoZW15Lm9ybSBpbXBvcnQgcmVsYXRpb25zaGlwCmZyb20gYXBwLmNvcmUuZGF0YWJhc2UgaW1wb3J0IEJhc2UKCgpjbGFzcyBVc2VyKEJhc2UpOgogICAgX190YWJsZW5hbWVfXyA9ICJ1c2VycyIKCiAgICBpZCA9IENvbHVtbihJbnRlZ2VyLCBwcmltYXJ5X2tleT1UcnVlLCBpbmRleD1UcnVlKQogICAgZW1haWwgPSBDb2x1bW4oU3RyaW5nLCB1bmlxdWU9VHJ1ZSwgaW5kZXg9VHJ1ZSwgbnVsbGFibGU9RmFsc2UpCiAgICB1c2VybmFtZSA9IENvbHVtbihTdHJpbmcsIHVuaXF1ZT1UcnVlLCBpbmRleD1UcnVlLCBudWxsYWJsZT1GYWxzZSkKICAgIGhhc2hlZF9wYXNzd29yZCA9IENvbHVtbihTdHJpbmcsIG51bGxhYmxlPUZhbHNlKQogICAgcm9sZSA9IENvbHVtbihTdHJpbmcsIG51bGxhYmxlPUZhbHNlLCBkZWZhdWx0PSJ1c2VyIikgICMgdXNlciwgYWRtaW4sIHNob3Bfb3duZXIKICAgIGlzX2FjdGl2ZSA9IENvbHVtbihCb29sZWFuLCBkZWZhdWx0PVRydWUsIG51bGxhYmxlPUZhbHNlKQogICAgbGFzdF9sb2dpbiA9IENvbHVtbihEYXRlVGltZSwgbnVsbGFibGU9VHJ1ZSkKICAgIGNyZWF0ZWRfYXQgPSBDb2x1bW4oRGF0ZVRpbWUsIGRlZmF1bHQ9ZGF0ZXRpbWUudXRjbm93LCBudWxsYWJsZT1GYWxzZSkKICAgIHVwZGF0ZWRfYXQgPSBDb2x1bW4oCiAgICAgICAgRGF0ZVRpbWUsIGRlZmF1bHQ9ZGF0ZXRpbWUudXRjbm93LCBvbnVwZGF0ZT1kYXRldGltZS51dGNub3csIG51bGxhYmxlPUZhbHNlCiAgICApCgogICAgIyBSZWxhdGlvbnNoaXBzCiAgICBtYXJrZXRwbGFjZV9pbXBvcnRfam9icyA9IHJlbGF0aW9uc2hpcCgKICAgICAgICAiTWFya2V0cGxhY2VJbXBvcnRKb2IiLCBiYWNrX3BvcHVsYXRlcz0idXNlciIKICAgICkKICAgIG93bmVkX3Nob3BzID0gcmVsYXRpb25zaGlwKCJTaG9wIiwgYmFja19wb3B1bGF0ZXM9Im93bmVyIikKCiAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgcmV0dXJuIGYiPFVzZXIodXNlcm5hbWU9J3tzZWxmLnVzZXJuYW1lfScsIGVtYWlsPSd7c2VsZi5lbWFpbH0nLCByb2xlPSd7c2VsZi5yb2xlfScpPiIKLS0tLS1FTkQgUFlUSE9OIENPREUtLS0tLQo=' $decodedUser = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($userContent)) $decodedUser = $decodedUser.Replace('-----BEGIN PYTHON CODE-----', '').Replace('-----END PYTHON CODE-----', '').Trim() $decodedUser | Out-File "models\database\user.py" -Encoding UTF8 # Create models/api/__init__.py Write-Host " Creating models\api\__init__.py..." -ForegroundColor Gray $apiInitContent = @" # models/api/__init__.py # Import statements will be added as you create the individual API model files # Example: # from .auth import UserRegister, UserLogin, UserResponse, LoginResponse __all__ = [ # Add your API model imports here as you create them ] "@ New-PythonFile -Path "models\api\__init__.py" -TempContent $apiInitContent # Create models/api/base.py Write-Host " Creating models\api\base.py..." -ForegroundColor Gray $apiBaseContent = 'LS0tLS1CRUdJTiBQWVRIT04gQ09ERS0tLS0tCiMgbW9kZWxzL2FwaS9iYXNlLnB5CmZyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBUeXBlVmFyLCBHZW5lcmljCmZyb20gcHlkYW50aWMgaW1wb3J0IEJhc2VNb2RlbAoKVCA9IFR5cGVWYXIoJ1QnKQoKY2xhc3MgTGlzdFJlc3BvbnNlKEJhc2VNb2RlbCwgR2VuZXJpY1tUXSk6CiAgICAiIiJHZW5lcmljIGxpc3QgcmVzcG9uc2UgbW9kZWwiIiIKICAgIGl0ZW1zOiBMaXN0W1RdCiAgICB0b3RhbDogaW50CiAgICBza2lwOiBpbnQKICAgIGxpbWl0OiBpbnQKCmNsYXNzIFN0YXR1c1Jlc3BvbnNlKEJhc2VNb2RlbCk6CiAgICAiIiJHZW5lcmljIHN0YXR1cyByZXNwb25zZSIiIgogICAgc3VjY2VzczogYm9vbAogICAgbWVzc2FnZTogc3RyCi0tLS0tRU5EIFBZVEhPTiBDT0RFLS0tLS0K' $decodedApi = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($apiBaseContent)) $decodedApi = $decodedApi.Replace('-----BEGIN PYTHON CODE-----', '').Replace('-----END PYTHON CODE-----', '').Trim() $decodedApi | Out-File "models\api\base.py" -Encoding UTF8 Write-Host "โœ… Basic model structure created!" -ForegroundColor Green Write-Host "" Write-Host "๐Ÿ” Testing file creation..." -ForegroundColor Yellow # Check if files were created $createdFiles = @( "models\database\__init__.py", "models\database\base.py", "models\database\user.py", "models\api\__init__.py", "models\api\base.py" ) foreach ($file in $createdFiles) { if (Test-Path $file) { $size = (Get-Item $file).Length Write-Host "โœ… $file ($size bytes)" -ForegroundColor Green } else { Write-Host "โŒ $file (missing)" -ForegroundColor Red } } Write-Host "" Write-Host "๐Ÿงช Testing Python imports..." -ForegroundColor Yellow try { $pythonTest = 'import sys; sys.path.append("."); from models.database.user import User; print("SUCCESS: Database models import working")' $testResult = python -c $pythonTest 2>&1 if ($LASTEXITCODE -eq 0) { Write-Host "โœ… Python import test passed!" -ForegroundColor Green } else { Write-Host "โš ๏ธ Python import test failed (may need dependencies)" -ForegroundColor Yellow } } catch { Write-Host "โš ๏ธ Python not available for testing" -ForegroundColor Yellow } Write-Host "" Write-Host "๐Ÿ“‹ Next steps:" -ForegroundColor Cyan Write-Host "1. Complete the remaining database models by copying from your original files:" -ForegroundColor White Write-Host " - models\database\product.py" -ForegroundColor Gray Write-Host " - models\database\shop.py" -ForegroundColor Gray Write-Host " - models\database\stock.py" -ForegroundColor Gray Write-Host " - models\database\marketplace.py" -ForegroundColor Gray Write-Host "" Write-Host "2. Extract API model classes from your api_models.py to separate files:" -ForegroundColor White Write-Host " - models\api\auth.py" -ForegroundColor Gray Write-Host " - models\api\product.py" -ForegroundColor Gray Write-Host " - models\api\shop.py" -ForegroundColor Gray Write-Host " - models\api\stock.py" -ForegroundColor Gray Write-Host " - models\api\marketplace.py" -ForegroundColor Gray Write-Host " - models\api\stats.py" -ForegroundColor Gray Write-Host "" Write-Host "3. Update imports throughout your application:" -ForegroundColor White Write-Host " Old: from models.database.user import User" -ForegroundColor Gray Write-Host " New: from models.database.user import User" -ForegroundColor Gray Write-Host "" Write-Host "โœจ Foundation completed successfully!" -ForegroundColor Green Write-Host "๐Ÿ“š Original files backed up in models\backup\" -ForegroundColor Green