> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
Esta especificación describe las capacidades mejoradas de configuración a través de la línea de comandos para TrustGraph, lo que permite a los usuarios gestionar elementos de configuración individuales utilizando comandos CLI granulares. La integración soporta cuatro casos de uso principales:
1.**Listar Elementos de Configuración**: Mostrar las claves de configuración de un tipo específico.
2.**Obtener Elemento de Configuración**: Recuperar los valores de configuración específicos.
3.**Establecer Elemento de Configuración**: Establecer o actualizar elementos de configuración individuales.
4.**Eliminar Elemento de Configuración**: Eliminar elementos de configuración específicos.
## Objetivos
- **Control Granular**: Permitir la gestión de elementos de configuración individuales en lugar de operaciones masivas.
- **Listado Basado en Tipo**: Permitir a los usuarios explorar los elementos de configuración por tipo.
- **Operaciones en Elemento Individual**: Proporcionar comandos para obtener/establecer/eliminar elementos de configuración individuales.
- **Integración con API**: Aprovechar la API de Config existente para todas las operaciones.
- **Patrón CLI Consistente**: Seguir las convenciones y patrones CLI establecidos de TrustGraph.
- **Manejo de Errores**: Proporcionar mensajes de error claros para operaciones inválidas.
- **Salida JSON**: Soporte para salida estructurada para uso programático.
- **Documentación**: Incluir ayuda y ejemplos de uso completos.
## Antecedentes
Actualmente, TrustGraph proporciona la gestión de la configuración a través de la API de Config y un único comando de línea de comandos `tg-show-config` que muestra toda la configuración. Si bien esto funciona para la visualización de la configuración, carece de capacidades de gestión granular.
Las limitaciones actuales incluyen:
- No hay forma de listar los elementos de configuración por tipo desde la línea de comandos.
- No hay ningún comando de línea de comandos para recuperar valores de configuración específicos.
- No hay ningún comando de línea de comandos para establecer elementos de configuración individuales.
- No hay ningún comando de línea de comandos para eliminar elementos de configuración específicos.
Esta especificación aborda estas lagunas agregando cuatro nuevos comandos de línea de comandos que proporcionan la gestión de configuración granular. Al exponer las operaciones de la API de Config individual a través de comandos CLI, TrustGraph puede:
- Permitir la gestión de la configuración a través de scripts.
- Permitir la exploración de la estructura de la configuración por tipo.
- Soporte para actualizaciones de configuración dirigidas.
- Proporcionar un control granular de la configuración.
## Diseño Técnico
### Arquitectura
La configuración CLI mejorada requiere los siguientes componentes técnicos:
1.**tg-list-config-items**
- Lista las claves de configuración para un tipo específico.
- Llama al método de API `Config.list(type)`.
- Salida la lista de claves de configuración.
Módulo: `trustgraph.cli.list_config_items`
2.**tg-get-config-item**
- Recupera el(los) elemento(s) de configuración específico(s).
- Llama al método de API `Config.get([ConfigKey(type, key)])`.
- Salida los valores de configuración en formato JSON.
Módulo: `trustgraph.cli.get_config_item`
3.**tg-put-config-item**
- Establece o actualiza un elemento de configuración.
- Llama al método de API `Config.put([ConfigValue(type, key, value)])`.
- Acepta los parámetros de tipo, clave y valor.
Módulo: `trustgraph.cli.put_config_item`
4.**tg-delete-config-item**
- Elimina un elemento de configuración.
- Llama al método de API `Config.delete([ConfigKey(type, key)])`.
- Acepta los parámetros de tipo y clave.
Módulo: `trustgraph.cli.delete_config_item`
### Modelos de Datos
#### ConfigKey y ConfigValue
Los comandos utilizan las estructuras de datos existentes de `trustgraph.api.types`:
```python
@dataclasses.dataclass
class ConfigKey:
type : str
key : str
@dataclasses.dataclass
class ConfigValue:
type : str
key : str
value : str
```
Esto permite:
- Manejo de datos consistente entre la CLI y la API.