@echo off REM ############################################################################ REM Fresh Database Setup Script (Windows) REM REM Purpose: Complete fresh database setup for Royal Enfield Workflow System REM REM Prerequisites: REM 1. PostgreSQL 16.x installed REM 2. Redis installed and running REM 3. Node.js 18+ installed REM 4. Environment variables configured in .env REM REM Usage: scripts\fresh-database-setup.bat REM ############################################################################ setlocal enabledelayedexpansion echo. echo =============================================================== echo Royal Enfield Workflow System - Fresh Database Setup echo =============================================================== echo. REM Load .env file if exist .env ( echo [*] Loading environment variables... for /f "usebackq tokens=1,2 delims==" %%a in (".env") do ( set "%%a=%%b" ) ) else ( echo [ERROR] .env file not found! echo Please copy env.example to .env and configure it pause exit /b 1 ) REM Set default values if not in .env if not defined DB_NAME set DB_NAME=royal_enfield_workflow if not defined DB_USER set DB_USER=postgres if not defined DB_HOST set DB_HOST=localhost if not defined DB_PORT set DB_PORT=5432 echo. echo WARNING: This will DROP the existing database! echo Database: %DB_NAME% echo Host: %DB_HOST%:%DB_PORT% echo. set /p CONFIRM="Are you sure you want to continue? (yes/no): " if /i not "%CONFIRM%"=="yes" ( echo Setup cancelled. exit /b 0 ) echo. echo =============================================================== echo Step 1: Dropping existing database (if exists)... echo =============================================================== echo. psql -h %DB_HOST% -p %DB_PORT% -U %DB_USER% -d postgres -c "DROP DATABASE IF EXISTS %DB_NAME%;" 2>nul echo [OK] Old database dropped echo. echo =============================================================== echo Step 2: Creating fresh database... echo =============================================================== echo. psql -h %DB_HOST% -p %DB_PORT% -U %DB_USER% -d postgres -c "CREATE DATABASE %DB_NAME% OWNER %DB_USER%;" echo [OK] Fresh database created: %DB_NAME% echo. echo =============================================================== echo Step 3: Installing PostgreSQL extensions... echo =============================================================== echo. psql -h %DB_HOST% -p %DB_PORT% -U %DB_USER% -d %DB_NAME% -c "CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";" psql -h %DB_HOST% -p %DB_PORT% -U %DB_USER% -d %DB_NAME% -c "CREATE EXTENSION IF NOT EXISTS \"pg_trgm\";" psql -h %DB_HOST% -p %DB_PORT% -U %DB_USER% -d %DB_NAME% -c "CREATE EXTENSION IF NOT EXISTS \"btree_gin\";" echo [OK] PostgreSQL extensions installed echo. echo =============================================================== echo Step 4: Running database migrations... echo =============================================================== echo. call npm run migrate echo [OK] All migrations completed echo. echo =============================================================== echo Step 5: Seeding admin configuration... echo =============================================================== echo. call npm run seed:config echo [OK] Admin configuration seeded echo. echo =============================================================== echo Step 6: Database verification... echo =============================================================== echo. psql -h %DB_HOST% -p %DB_PORT% -U %DB_USER% -d %DB_NAME% -c "SELECT tablename FROM pg_tables WHERE schemaname = 'public' ORDER BY tablename;" echo [OK] Database structure verified echo. echo =============================================================== echo FRESH DATABASE SETUP COMPLETE! echo =============================================================== echo. echo Next Steps: echo 1. Assign admin role to your user: echo psql -d %DB_NAME% -f scripts\assign-admin-user.sql echo. echo 2. Start the backend server: echo npm run dev echo. echo 3. Access the application: echo http://localhost:5000 echo. echo Database is ready for production use! echo. pause