# pgAdmin Database Administration Guide

## Access pgAdmin

- **URL**: http://localhost:8080
- **Email**: admin@serpentrace.dev  
- **Password**: admin

## Pre-configured Server

The pgAdmin interface should have a pre-configured server named **"SerpentRace PostgreSQL Dev"** in the "Development" group.

## Manual Server Configuration (If Needed)

If the server is not automatically configured, add it manually:

### Server Details
- **Name**: SerpentRace PostgreSQL Dev
- **Host**: postgres (or localhost if connecting from outside Docker)
- **Port**: 5432
- **Database**: serpentrace
- **Username**: postgres
- **Password**: postgres

### Steps to Add Server Manually

1. Right-click on "Servers" in the left panel
2. Select "Register" > "Server..."
3. Fill in the "General" tab:
   - Name: `SerpentRace PostgreSQL Dev`
   - Server group: `Development`
4. Fill in the "Connection" tab:
   - Host name/address: `postgres`
   - Port: `5432`
   - Maintenance database: `serpentrace`
   - Username: `postgres`
   - Password: `postgres`
5. Click "Save"

## Common Database Operations

### View Tables
1. Expand the server connection
2. Expand "Databases" > "serpentrace"
3. Expand "Schemas" > "public"
4. Expand "Tables"

### Run SQL Queries
1. Right-click on the database name
2. Select "Query Tool"
3. Write your SQL queries in the editor
4. Click the "Execute" button or press F5

### View Data
1. Right-click on any table
2. Select "View/Edit Data" > "All Rows"

## Troubleshooting

### Connection Issues
- Ensure Docker containers are running: `docker ps`
- Check container logs: `docker logs serpentrace-postgres-dev`
- Test connections: `npm run test:connections`

### Authentication Failed
- Verify the password is correct: `postgres`
- Check if you're using the correct hostname: `postgres` (inside Docker) vs `localhost` (outside Docker)

### Server Not Appearing
- Restart pgAdmin container:
  ```bash
  docker-compose -f docker-compose.dev.yml restart pgadmin
  ```
- Clear browser cache and reload

## Development Tips

### Useful SQL Queries

```sql
-- List all tables
SELECT table_name FROM information_schema.tables 
WHERE table_schema = 'public';

-- Check database size
SELECT pg_size_pretty(pg_database_size('serpentrace'));

-- View active connections
SELECT * FROM pg_stat_activity WHERE datname = 'serpentrace';

-- Check migration status (if using TypeORM)
SELECT * FROM migrations ORDER BY timestamp DESC;
```

### Database Backup
1. Right-click on database name
2. Select "Backup..."
3. Choose format (Custom recommended for pgAdmin restore)
4. Set filename and location
5. Click "Backup"

### Database Restore
1. Right-click on "Databases"
2. Select "Restore..."
3. Choose the backup file
4. Configure options as needed
5. Click "Restore"

## Security Notes

⚠️ **Development Only**: The current configuration uses default credentials and is intended for development only. For production:

- Use strong, unique passwords
- Enable SSL connections
- Restrict network access
- Use environment variables for credentials
- Enable authentication and authorization features
