reprogl

Форк
0
/
geolocation.go 
37 строк · 595.0 Байт
1
package repositories
2

3
import (
4
	"database/sql"
5
	"errors"
6
	"net"
7

8
	"xelbot.com/reprogl/models"
9
)
10

11
type GeolocationRepository struct {
12
	DB *sql.DB
13
}
14

15
func (gr *GeolocationRepository) FindByIP(ip net.IP) (*models.Geolocation, error) {
16
	query := `
17
		SELECT
18
			gl.ip_long
19
		FROM geo_location AS gl
20
		WHERE gl.ip_addr = ?`
21

22
	location := &models.Geolocation{IpAddr: ip.String()}
23

24
	err := gr.DB.QueryRow(query, ip.String()).Scan(
25
		&location.ID,
26
	)
27

28
	if err != nil {
29
		if errors.Is(err, sql.ErrNoRows) {
30
			return nil, models.RecordNotFound
31
		} else {
32
			return nil, err
33
		}
34
	}
35

36
	return location, nil
37
}
38

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.