2017-01-25 19:01:02 +00:00
|
|
|
package datastore
|
|
|
|
|
|
|
|
import (
|
2018-04-25 12:29:32 +00:00
|
|
|
"database/sql"
|
2018-04-24 08:28:23 +00:00
|
|
|
"github.com/usefathom/fathom/pkg/models"
|
2017-01-25 19:01:02 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var v models.Visitor
|
|
|
|
|
|
|
|
// GetVisitorByKey ...
|
|
|
|
func GetVisitorByKey(key string) (*models.Visitor, error) {
|
2018-04-25 12:29:32 +00:00
|
|
|
v := &models.Visitor{}
|
|
|
|
query := dbx.Rebind(`SELECT v.id FROM visitors v WHERE v.visitor_key = ? LIMIT 1`)
|
|
|
|
err := dbx.Get(v, query, key)
|
2017-01-25 21:48:24 +00:00
|
|
|
if err != nil {
|
2018-04-25 12:29:32 +00:00
|
|
|
if err == sql.ErrNoRows {
|
|
|
|
return nil, ErrNoResults
|
|
|
|
}
|
|
|
|
|
2017-01-25 21:48:24 +00:00
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2018-04-25 12:29:32 +00:00
|
|
|
return v, nil
|
2017-01-25 19:01:02 +00:00
|
|
|
}
|
|
|
|
|
2018-04-25 12:29:32 +00:00
|
|
|
// SaveVisitor inserts a single visitor model into the connected database
|
2017-01-25 19:01:02 +00:00
|
|
|
func SaveVisitor(v *models.Visitor) error {
|
2018-04-25 12:29:32 +00:00
|
|
|
query := dbx.Rebind(`INSERT INTO visitors(visitor_key, ip_address, device_os, browser_name, browser_version, browser_language, screen_resolution, country) VALUES( ?, ?, ?, ?, ?, ?, ?, ? )`)
|
|
|
|
result, err := dbx.Exec(query, v.Key, v.IpAddress, v.DeviceOS, v.BrowserName, v.BrowserVersion, v.BrowserLanguage, v.ScreenResolution, v.Country)
|
2017-01-25 19:01:02 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2018-04-25 12:29:32 +00:00
|
|
|
v.ID, _ = result.LastInsertId()
|
|
|
|
return nil
|
2017-01-25 19:01:02 +00:00
|
|
|
}
|