Implementación de List Clients en Client Services

Clase 42 de 49Curso Práctico de Python: Creación de un CRUD

Resumen

¿Cómo listar los clientes desde client services?

Llega un punto crucial en el desarrollo de software donde necesitamos interactuar con nuestros datos de manera efectiva. En este caso, se trata de implementar un método que nos permita listar a los clientes desde client services para entender mejor quienes son nuestros clientes. La forma en que gestionamos nuestros datos puede determinar el éxito de nuestras aplicaciones.

Para implementar el método list en client services, se debe empezar declarando un nuevo método llamado list_clients, el cual no necesita argumentos externos, solo self. El propósito principal es abrir el archivo donde se guarda la referencia a nuestra tabla de clientes en modo de lectura (usando el modo r para leer).

¿Cómo se utiliza el Reader?

La lectura de datos se realiza mediante un lector dict. Este proceso se lleva a cabo rápidamente utilizando DictReader que recibe como parámetros el archivo y los nombres de los campos (fieldnames) extraídos de client_skema. Es importante recordar que el Reader es un iterable, y para convertirlo en una lista usable, utilizamos la función global list. Así, el método devuelve una lista de clientes.

def list_clients(self):
    with open(self.filename, mode='r') as f:
        reader = DictReader(f, fieldnames=ClientSchema().FIELD_NAMES)
        return list(reader)

¿Cómo integrar la interfaz de comandos para mostrar a los clientes?

Una vez que tenemos el método para listar a nuestros clientes, el siguiente paso es presentarlos de manera amigable en la consola. Para ello, se hace necesario crear una interfaz en los comandos.

¿Cómo se define el comando list en la consola?

Primero, se busca e identifica dónde se declaran los comandos. En este caso, el comando list no necesita argumentos adicionales ni opciones, al contrario de lo que ocurre con el comando create. Se inicia instanciando la clase ClienteService, pasando el nombre de la tabla correspondiente. Luego, se genera una tabla para visualizar los resultados:

  1. Se imprimen los encabezados: ID, Name, Company, Email, y Position.
  2. Se dibuja una línea para separar los encabezados de los datos.
  3. Se itera sobre la lista de clientes, formateando un string para cada uno y presentando sus datos.

¿Por qué usar clic eco en vez de print?

El uso de clic eco garantiza que el comportamiento de nuestra impresión en consola sea consistente a través de diferentes sistemas operativos, problema que podría presentarse con print. Por lo tanto, reemplazamos las llamadas print por clic eco para asegurar esta uniformidad.

# Reemplazo de llamadas print por clic eco
click.echo('ID  Name  Company  Email  Position')
click.echo('-' * 60)
for client in client_list:
    click.echo('{}  {}  {}  {}  {}'.format(
        client['uid'],
        client['name'],
        client['company'],
        client['email'],
        client['position']
    ))

¿Cómo ejecutar y probar el programa?

Finalmente, una vez que hemos implementado y adaptado correctamente los métodos y comandos, es momento de probar el programa:

  1. Se invoca a list mediante el comando p b clients list, mostrando el primer cliente.
  2. Se puede crear un nuevo cliente, ingresando los datos como nombre, compañía, email y posición.
  3. Luego, nuevamente al ejecutar p b clients list, veremos que aparecen los dos clientes, lo cual demuestra que el programa está funcionando correctamente.

Este progreso refleja un paso significativo, dando claridad sobre cómo gestionar datos en una aplicación que poco a poco se asemeja a lo que se necesita en la industria. ¡Es un gran momento para celebrar y seguir avanzando en el aprendizaje!