# Database Connection Points

This document lists all locations where database connections are configured in the codebase.

## Primary Connection Configuration

### 1. `aumentum_browser_service.py` (Main Service)
**Location:** Lines 2149-2158  
**Current:** MSSQL via pyodbc/FreeTDS  
**Function:** `_get_db_connection()` (line 58)  
**Config Variable:** `DEFAULT_DB_CONFIG`

```python
DEFAULT_DB_CONFIG = {
    "server": "MSSQL_LRS43",
    "port": 1433,
    "database": "LRS43",
    "username": "root",
    "password": "5bad89a3",
    "driver": "FreeTDS",
    "encrypt": "no",
    "trust_server_certificate": "yes",
}
```

**Used by:**
- `aumentum_api.py` (line 19, 47-50)
- `scripts/dump_mssql_database.py` (line 11)
- `scripts/dump_to_mysql.py` (line 11)

---

## Scripts with Direct DB_CONFIG

### 2. `convert_script_db.py`
**Location:** Lines 35-44  
**Connection Function:** `get_db_connection()` (line 47)  
**Type:** MSSQL via pyodbc

```python
DB_CONFIG = {
    "server": "10.10.10.3",
    "port": 1433,
    "database": "LRS43",
    "username": "root",
    "password": "5bad89a3",
    "driver": "FreeTDS",
    "encrypt": "no",
    "trust_server_certificate": "yes",
}
```

### 3. `filesystem_based_discovery.py`
**Location:** Lines 12-18  
**Connection Function:** `get_connection()` (line 20)  
**Type:** MSSQL via pyodbc

```python
DB_CONFIG = {
    "server": "MSSQL_LRS43",
    "database": "LRS43",
    "username": "root",
    "password": "5bad89a3",
    "driver": "FreeTDS",
}
```

### 4. `findrelated_images.py`
**Location:** Lines 31-50  
**Connection Function:** `get_connection()` (line 37)  
**Type:** MSSQL via pyodbc

### 5. `dump_all_tables.py`
**Location:** Lines 8-14  
**Connection Function:** `get_connection()` (line 16)  
**Type:** MSSQL via pyodbc

```python
DB_CONFIG = {
    "server": "MSSQL_LRS43",
    "database": "LRS43",
    "username": "root",
    "password": "5bad89a3",
    "driver": "FreeTDS",
}
```

### 6. `fix_document_image_matching.py`
**Location:** Lines 34-40  
**Connection Function:** `get_db_connection()` (line 48)  
**Type:** MSSQL via pyodbc

### 7. `find_all_pages.py`
**Location:** Lines 18-26  
**Connection Function:** `get_connection()` (line 18)  
**Type:** MSSQL via pyodbc

### 8. `diagnose_pages.py`
**Location:** Lines 21-48  
**Connection Function:** `get_connection()` (line 21)  
**Type:** MSSQL via pyodbc

### 9. `reverse_lookup.py`
**Location:** Lines 17-25  
**Connection Function:** `get_connection()` (line 17)  
**Type:** MSSQL via pyodbc

### 10. `match_by_timestamp_python.py`
**Type:** MSSQL via pyodbc

### 11. `match_by_url_dates.py`
**Type:** MSSQL via pyodbc

### 12. `get_pl11089_transaction_number.py`
**Type:** MSSQL via pyodbc

### 13. `get_all_pages_via_transaction.py`
**Type:** MSSQL via pyodbc

### 14. `find_pl11089_via_transaction.py`
**Type:** MSSQL via pyodbc

### 15. `find_pl11089_march.py`
**Type:** MSSQL via pyodbc

### 16. `find_pl11089_by_dates.py`
**Type:** MSSQL via pyodbc

### 17. `find_pl11089_by_approval_date.py`
**Type:** MSSQL via pyodbc

### 18. `find_pl11942_alternative_method.py`
**Type:** MSSQL via pyodbc

### 19. `find_any_46page_document.py`
**Type:** MSSQL via pyodbc

### 20. `find_46_page_property_file.py`
**Type:** MSSQL via pyodbc

### 21. `final_comprehensive_46page_search.py`
**Type:** MSSQL via pyodbc

### 22. `expanded_pl11089_search.py`
**Type:** MSSQL via pyodbc

### 23. `diagnose_image_links.py`
**Type:** MSSQL via pyodbc

### 24. `diagnose_image_associations.py`
**Type:** MSSQL via pyodbc

### 25. `diagnose_pl_mismatch.py`
**Type:** MSSQL via pyodbc

### 26. `diagnose_pl11089_simple.py`
**Type:** MSSQL via pyodbc

### 27. `diagnose_pl11089_comprehensive.py`
**Type:** MSSQL via pyodbc

### 28. `check_documents_exist.py`
**Type:** MSSQL via pyodbc

### 29. `check_march9_transaction_numbers.py`
**Type:** MSSQL via pyodbc

### 30. `test_db_connection.py`
**Type:** MSSQL via pyodbc

### 31. `test_fix.py`
**Type:** MSSQL via pyodbc

### 32. `test_fix_direct.py`
**Type:** MSSQL via pyodbc

### 33. `test_pl11942.py`
**Type:** MSSQL via pyodbc

### 34. `test_candidates_direct.py`
**Type:** MSSQL via pyodbc

### 35. `test_filesystem_discovery.py`
**Type:** MSSQL via pyodbc

### 36. `verify_pl11089_candidates.py`
**Type:** MSSQL via pyodbc

### 37. `verify_and_fix_associations.py`
**Type:** MSSQL via pyodbc

### 38. `update_database_schema.py`
**Type:** MSSQL via pyodbc

### 39. `understand_schema.py`
**Type:** MSSQL via pyodbc

### 40. `run_database_investigation.py`
**Type:** MSSQL via pyodbc

---

## Shell Scripts with Database Connections

### 41. `run_investigation.sh`
**Location:** Lines 8-11  
**Type:** MSSQL via sqlcmd/tsql  
**Connection:** Direct command-line connection

```bash
SERVER="10.10.10.3"
DATABASE="LRS43"
USERNAME="root"
PASSWORD="5bad89a3"
```

---

## Migration to MySQL

### Files Requiring Updates:

1. **Primary Service:** `aumentum_browser_service.py`
   - Update `_get_db_connection()` to support MySQL
   - Add MySQL connection logic using `pymysql` or `mysql.connector`

2. **API Service:** `aumentum_api.py`
   - Uses `DEFAULT_DB_CONFIG` from `aumentum_browser_service`
   - Will automatically use updated config

3. **All Script Files:** (Listed above)
   - Update `DB_CONFIG` dictionaries
   - Change connection functions to use MySQL driver
   - Replace `pyodbc` with `pymysql` or `mysql.connector`

4. **Shell Scripts:** `run_investigation.sh`
   - Update to use `mysql` command instead of `sqlcmd`/`tsql`

---

## MySQL Connection Template

```python
import pymysql  # or mysql.connector

MYSQL_DB_CONFIG = {
    "host": "localhost",  # or MySQL server IP
    "port": 3306,
    "database": "LRS43",
    "user": "root",
    "password": "your_password",
    "charset": "utf8mb4",
    "cursorclass": pymysql.cursors.DictCursor,  # Optional
}

def get_mysql_connection():
    return pymysql.connect(**MYSQL_DB_CONFIG)
```

---

## Next Steps

1. ✅ Convert database dump to MySQL format (see `database_dump/convert_mssql_to_mysql.py`)
2. ⏳ Update `aumentum_browser_service.py` to support MySQL
3. ⏳ Update all script files with MySQL connections
4. ⏳ Update shell scripts for MySQL
5. ⏳ Test all connections
6. ⏳ Update requirements.txt with MySQL driver

