Exemplo n.º 1
0
func (p PostgresDb) GetServices() ([]core.Service, error) {
	// read from services table
	rows, err := p.pg.Query("SELECT id, host, interface, port, type, scheduler, persistence, netmask FROM services")
	if err != nil {
		return nil, fmt.Errorf("Failed to select from services table - %v", err)
	}
	defer rows.Close()

	services := make([]core.Service, 0, 0)

	// get data
	for rows.Next() {
		svc := core.Service{}
		err = rows.Scan(&svc.Id, &svc.Host, &svc.Interface, &svc.Port, &svc.Type, &svc.Scheduler, &svc.Persistence, &svc.Netmask)
		if err != nil {
			return nil, fmt.Errorf("Failed to save results into service - %v", err)
		}

		// get service's servers
		servers, err := p.GetServers(svc.Id)
		if err != nil {
			return nil, err
		}
		svc.Servers = servers

		services = append(services, svc)
	}

	// check for errors
	if err = rows.Err(); err != nil {
		return services, fmt.Errorf("Error with results - %v", err)
	}
	return services, nil
}