Àlex Grau Roca
EstudianteÀlex Grau Roca
EstudianteAndres Gutierrez
EstudianteFabricio Rodríguez Aguirre
EstudianteCristóbal Contreras
EstudianteNo me termina de convencer el tener tanta lógica de tecnologías específicas en los archivos del servicio. Por ejemplo, todo el tema de la configuración y el conector yo lo quitaría de aquí, dejando toda esta lógica a nivel del propio repositorio de Postgres, de modo que en este código la única vinculación con la tecnología sería el constructor. . Con esto no solamente ganamos una mayor abstracción, sino que además queda todo mejor organizado y este código se puede aprovechar en cualquier servicio que lo requiera.
Por ejemplo algo así:
func NewPostgresRepository(url string) (*PostgresRepository, error) { if len(url) == 0 { var err error url, err = loadServerUrl() if err != nil { return nil, err } } db, err := sql.Open("postgres", url) if err != nil { return nil, err } return &PostgresRepository{db}, nil } func (repo *PostgresRepository) Close() { repo.db.Close() } func loadServerUrl() (string, error) { var cfg Config err := envconfig.Process("", &cfg) if err != nil { return "", err } return fmt.Sprintf( "postgres://%s:%s@postgres/%s?sslmode=disable", cfg.PostgresUser, cfg.PostgresPassword, cfg.PostgresDB, ), nil }
De modo que siempre hay la opción de enviar una dirección personalizada, pero si se deja la url vacía, se utilizará la por defecto, que es la que se obtiene a partir de las variables de entorno.
De acuerdo, deberían tener un curso de golang packaging ya que para ser un curso "++avanzado++" solo estamos viendo implementaciones de un par de tecnologías y el concepto CQRS hasta el momento quedó solo mencionado al inicio del curso.
Carpe diem:
Muy buenos los comentarios que me preceden, me gustaría añadir algo más. Mi interés ha sido ver temas de arquitectura aplicada, este curso en particular es de los pocos pero siento que aquí se intenta hacer lucir al presentador sobre la explicación, algo recurrente en casi todos los cursos de Platzi.
Go es casi el peor lenguaje para explicar temas de arquitectura, en su lugar convierte al presentador en una suerte de presti-digitador (entiéndase la ironía), oculta todo el tinglado detrás de un 'go get ..', es decir, si no tienes el paquete de turno, a menudo creado por google, pues ya valiste. El código se transforma en un mero .config, o sea se hace, carpintería.
Saluti,
Fabricio
go get github.com/gorilla/mux go get github.com/kelseyhightower/envconfig