tasks ready
This commit is contained in:
77
specs/010-refactor-cli-to-web/data-model.md
Normal file
77
specs/010-refactor-cli-to-web/data-model.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user