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
|
|
|
)
|
|
|
|
|
2018-04-25 12:01:42 +00:00
|
|
|
// GetPageByHostnameAndPath retrieves a page from the connected database
|
2017-01-25 19:01:02 +00:00
|
|
|
func GetPageByHostnameAndPath(hostname, path string) (*models.Page, error) {
|
2018-04-25 12:01:42 +00:00
|
|
|
p := &models.Page{}
|
2018-04-25 12:29:32 +00:00
|
|
|
query := dbx.Rebind(`SELECT * FROM pages WHERE hostname = ? AND path = ? LIMIT 1`)
|
|
|
|
err := dbx.Get(p, query, hostname, path)
|
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:01:42 +00:00
|
|
|
return p, nil
|
2017-01-25 19:01:02 +00:00
|
|
|
}
|
|
|
|
|
2018-04-25 12:01:42 +00:00
|
|
|
// SavePage inserts the page model in the connected database
|
2017-01-25 19:01:02 +00:00
|
|
|
func SavePage(p *models.Page) error {
|
2018-05-02 12:52:52 +00:00
|
|
|
query := dbx.Rebind(`INSERT INTO pages(scheme, hostname, path) VALUES(?, ?, ?)`)
|
|
|
|
result, err := dbx.Exec(query, p.Scheme, p.Hostname, p.Path)
|
2017-01-25 19:01:02 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2018-04-25 12:01:42 +00:00
|
|
|
p.ID, _ = result.LastInsertId()
|
|
|
|
return nil
|
2017-01-25 19:01:02 +00:00
|
|
|
}
|