mirror of
https://github.com/status-im/fathom.git
synced 2025-03-01 11:30:28 +00:00
57 lines
1.0 KiB
Go
57 lines
1.0 KiB
Go
package datastore
|
|
|
|
import (
|
|
"github.com/dannyvankooten/ana/pkg/models"
|
|
)
|
|
|
|
var v models.Visitor
|
|
|
|
// GetVisitorByKey ...
|
|
func GetVisitorByKey(key string) (*models.Visitor, error) {
|
|
// query by unique visitor key
|
|
stmt, err := DB.Prepare("SELECT v.id FROM visitors v WHERE v.visitor_key = ? LIMIT 1")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
defer stmt.Close()
|
|
err = stmt.QueryRow(key).Scan(&v.ID)
|
|
return &v, err
|
|
}
|
|
|
|
// SaveVisitor ...
|
|
func SaveVisitor(v *models.Visitor) error {
|
|
// prepare statement for inserting data
|
|
stmt, err := DB.Prepare(`INSERT INTO visitors (
|
|
visitor_key,
|
|
ip_address,
|
|
device_os,
|
|
browser_name,
|
|
browser_version,
|
|
browser_language,
|
|
screen_resolution,
|
|
country
|
|
) VALUES( ?, ?, ?, ?, ?, ?, ?, ? )`)
|
|
defer stmt.Close()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
result, err := stmt.Exec(
|
|
v.Key,
|
|
v.IpAddress,
|
|
v.DeviceOS,
|
|
v.BrowserName,
|
|
v.BrowserVersion,
|
|
v.BrowserLanguage,
|
|
v.ScreenResolution,
|
|
v.Country,
|
|
)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
v.ID, err = result.LastInsertId()
|
|
return err
|
|
}
|