code: func urlParserPostgreSQL(cd *ConnectionDetails) error {
  	var err error
  	name := cd.URL
  	if strings.HasPrefix(name, "postgres://") || strings.HasPrefix(name, "postgresql://") {
  		name, err = pg.ParseURL(name)
  		if err != nil {
  			return err
  		}
  	}
  
  	o := make(values)
  	if err := parseOpts(name, o); err != nil {
  		return err
  	}
  
  	if dbname, ok := o["dbname"]; ok {
  		cd.Database = dbname
  	}
  	if host, ok := o["host"]; ok {
  		cd.Host = host
  	}
  	if password, ok := o["password"]; ok {
  		cd.Password = password
  	}
  	if user, ok := o["user"]; ok {
  		cd.User = user
  	}
  	if port, ok := o["port"]; ok {
  		cd.Port = port
  	}
  
  	options := []string{"sslmode", "fallback_application_name", "connect_timeout", "sslcert", "sslkey", "sslrootcert"}
  
  	for i := range options {
  		if opt, ok := o[options[i]]; ok {
  			cd.Options[options[i]] = opt
  		}
  	}
  
  	return nil
  }
docs: // urlParserPostgreSQL parses the options the same way official lib/pg does:
  // https://godoc.org/github.com/lib/pq#hdr-Connection_String_Parameters
  // After parsed, they are set to ConnectionDetails instance