2.0 KiB
2.0 KiB
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
class SearchRequest(BaseModel):
env: str # e.g., "dev", "prod"
query: str # Regex pattern
SearchResultItem
class SearchResultItem(BaseModel):
dataset_id: int
dataset_name: str
field: str
match_context: str
full_value: str
SearchResponse
class SearchResponse(BaseModel):
results: List[SearchResultItem]
count: int
Debug Tool
DebugDbRequest
class DebugDbRequest(BaseModel):
source_env: str
target_env: str
DebugDbResponse
class DebugDbResponse(BaseModel):
source_db_count: int
target_db_count: int
details: Dict[str, Any] # Full JSON dump
DatasetStructureRequest
class DatasetStructureRequest(BaseModel):
env: str
dataset_id: int