Files
ss-tools/specs/010-refactor-cli-to-web/data-model.md
2026-01-07 18:59:49 +03:00

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
```