78 lines
2.0 KiB
Markdown
78 lines
2.0 KiB
Markdown
# Data Model: Refactor CLI Scripts to Web Application
|
|
|
|
## 1. Connection Configuration
|
|
|
|
To support the "Dataset Mapper" tool with reusable connections (as per spec), we need a way to store external database credentials.
|
|
|
|
### Entity: `ConnectionConfig`
|
|
|
|
* **Table**: `connection_configs`
|
|
* **Purpose**: Stores credentials for external databases (e.g., PostgreSQL) used for column mapping.
|
|
|
|
| Field | Type | Required | Description |
|
|
| :--- | :--- | :--- | :--- |
|
|
| `id` | UUID | Yes | Primary Key |
|
|
| `name` | String | Yes | User-friendly name (e.g., "Production DWH") |
|
|
| `type` | String | Yes | Enum: `postgres`, `excel` (future) |
|
|
| `host` | String | No | DB Host (for postgres) |
|
|
| `port` | Integer | No | DB Port (for postgres) |
|
|
| `database` | String | No | DB Name (for postgres) |
|
|
| `username` | String | No | DB User (for postgres) |
|
|
| `password` | String | No | Encrypted/Obfuscated password (for postgres) |
|
|
| `created_at` | DateTime | Yes | Creation timestamp |
|
|
| `updated_at` | DateTime | Yes | Last update timestamp |
|
|
|
|
## 2. Tool Request/Response Models (Pydantic)
|
|
|
|
These models define the API contracts for the new tools.
|
|
|
|
### Search Tool
|
|
|
|
#### `SearchRequest`
|
|
```python
|
|
class SearchRequest(BaseModel):
|
|
env: str # e.g., "dev", "prod"
|
|
query: str # Regex pattern
|
|
```
|
|
|
|
#### `SearchResultItem`
|
|
```python
|
|
class SearchResultItem(BaseModel):
|
|
dataset_id: int
|
|
dataset_name: str
|
|
field: str
|
|
match_context: str
|
|
full_value: str
|
|
```
|
|
|
|
#### `SearchResponse`
|
|
```python
|
|
class SearchResponse(BaseModel):
|
|
results: List[SearchResultItem]
|
|
count: int
|
|
```
|
|
|
|
### Debug Tool
|
|
|
|
#### `DebugDbRequest`
|
|
```python
|
|
class DebugDbRequest(BaseModel):
|
|
source_env: str
|
|
target_env: str
|
|
```
|
|
|
|
#### `DebugDbResponse`
|
|
```python
|
|
class DebugDbResponse(BaseModel):
|
|
source_db_count: int
|
|
target_db_count: int
|
|
details: Dict[str, Any] # Full JSON dump
|
|
```
|
|
|
|
#### `DatasetStructureRequest`
|
|
```python
|
|
class DatasetStructureRequest(BaseModel):
|
|
env: str
|
|
dataset_id: int
|
|
```
|