package service

import (
	"log"
	"net"

	"github.com/dcarrillo/whatismyip/models"
)

// Geo defines a base type for lookups
type Geo struct {
	IP net.IP
}

// LookUpCity queries the database for city data related to the given IP
func (g *Geo) LookUpCity() *models.GeoRecord {
	record := &models.GeoRecord{}
	err := record.LookUp(g.IP)
	if err != nil {
		log.Println(err)
		return nil
	}

	return record
}

// LookUpASN queries the database for ASN data related to the given IP
func (g *Geo) LookUpASN() *models.ASNRecord {
	record := &models.ASNRecord{}
	err := record.LookUp(g.IP)
	if err != nil {
		log.Println(err)
		return nil
	}

	return record
}