2018-04-27 16:25:01 +02:00
|
|
|
package datastore
|
|
|
|
|
2018-04-27 17:28:03 +02:00
|
|
|
import "github.com/usefathom/fathom/pkg/models"
|
|
|
|
|
2018-04-27 16:25:01 +02:00
|
|
|
// TotalReferrers returns the total # of referrers between two given timestamps
|
|
|
|
func TotalReferrers(before int64, after int64) (int, error) {
|
|
|
|
var total int
|
|
|
|
|
|
|
|
query := dbx.Rebind(`
|
2018-04-27 17:28:03 +02:00
|
|
|
SELECT
|
2018-04-30 16:11:47 +02:00
|
|
|
COALESCE(SUM(t.count), 0)
|
2018-04-27 17:28:03 +02:00
|
|
|
FROM total_referrers t
|
|
|
|
WHERE UNIX_TIMESTAMP(t.date) <= ? AND UNIX_TIMESTAMP(t.date) >= ?`)
|
2018-04-27 16:25:01 +02:00
|
|
|
|
|
|
|
err := dbx.Get(&total, query, before, after)
|
|
|
|
return total, err
|
|
|
|
}
|
2018-04-27 17:28:03 +02:00
|
|
|
|
2018-05-02 14:52:52 +02:00
|
|
|
// TotalUniqueReferrers returns the total # of unique referrers between two given timestamps
|
|
|
|
func TotalUniqueReferrers(before int64, after int64) (int, error) {
|
|
|
|
var total int
|
|
|
|
|
|
|
|
query := dbx.Rebind(`
|
|
|
|
SELECT
|
|
|
|
COALESCE(SUM(t.count_unique), 0)
|
|
|
|
FROM total_referrers t
|
|
|
|
WHERE UNIX_TIMESTAMP(t.date) <= ? AND UNIX_TIMESTAMP(t.date) >= ?`)
|
|
|
|
|
|
|
|
err := dbx.Get(&total, query, before, after)
|
|
|
|
return total, err
|
|
|
|
}
|
|
|
|
|
|
|
|
func TotalsPerReferrer(before int64, after int64, limit int64) ([]*models.Total, error) {
|
|
|
|
var results []*models.Total
|
2018-04-27 17:28:03 +02:00
|
|
|
|
|
|
|
query := dbx.Rebind(`
|
|
|
|
SELECT
|
2018-05-02 14:52:52 +02:00
|
|
|
t.value,
|
|
|
|
COALESCE(SUM(t.count), 0) AS count,
|
|
|
|
COALESCE(SUM(t.count_unique), 0) AS count_unique
|
2018-04-27 17:28:03 +02:00
|
|
|
FROM total_referrers t
|
|
|
|
WHERE UNIX_TIMESTAMP(t.date) <= ? AND UNIX_TIMESTAMP(t.date) >= ?
|
2018-05-02 14:52:52 +02:00
|
|
|
GROUP BY t.value
|
|
|
|
ORDER BY count DESC
|
2018-04-27 17:28:03 +02:00
|
|
|
LIMIT ?`)
|
|
|
|
|
|
|
|
err := dbx.Select(&results, query, before, after, limit)
|
|
|
|
return results, err
|
|
|
|
}
|