mirror of
https://github.com/status-im/fathom.git
synced 2025-03-01 11:30:28 +00:00
generate sql statement dynamically
This commit is contained in:
parent
8c6e07255f
commit
a72df6274f
@ -31,7 +31,8 @@ func (db *sqlstore) UpdateReferrerStats(s *models.ReferrerStats) error {
|
|||||||
|
|
||||||
func (db *sqlstore) GetAggregatedReferrerStats(startDate time.Time, endDate time.Time, limit int) ([]*models.ReferrerStats, error) {
|
func (db *sqlstore) GetAggregatedReferrerStats(startDate time.Time, endDate time.Time, limit int) ([]*models.ReferrerStats, error) {
|
||||||
var result []*models.ReferrerStats
|
var result []*models.ReferrerStats
|
||||||
query := db.Rebind(`
|
|
||||||
|
sql := `
|
||||||
SELECT
|
SELECT
|
||||||
MIN(hostname) AS hostname,
|
MIN(hostname) AS hostname,
|
||||||
MIN(pathname) AS pathname,
|
MIN(pathname) AS pathname,
|
||||||
@ -42,7 +43,14 @@ func (db *sqlstore) GetAggregatedReferrerStats(startDate time.Time, endDate time
|
|||||||
COALESCE(ROUND(SUM(avg_duration*pageviews)/SUM(pageviews), 4), 0.00) AS avg_duration
|
COALESCE(ROUND(SUM(avg_duration*pageviews)/SUM(pageviews), 4), 0.00) AS avg_duration
|
||||||
FROM daily_referrer_stats
|
FROM daily_referrer_stats
|
||||||
WHERE date >= ? AND date <= ?
|
WHERE date >= ? AND date <= ?
|
||||||
GROUP BY COALESCE(NULLIF(groupname, ""), hostname || pathname) ORDER BY pageviews DESC LIMIT ?`)
|
GROUP BY COALESCE(NULLIF(groupname, ""), `
|
||||||
|
if db.Config.Driver == "sqlite3" {
|
||||||
|
sql = sql + `hostname || pathname`
|
||||||
|
} else {
|
||||||
|
sql = sql + ` CONCAT(hostname, pathname)`
|
||||||
|
}
|
||||||
|
sql = sql + `) ORDER BY pageviews DESC LIMIT ?`
|
||||||
|
query := db.Rebind(sql)
|
||||||
|
|
||||||
err := db.Select(&result, query, startDate.Format("2006-01-02"), endDate.Format("2006-01-02"), limit)
|
err := db.Select(&result, query, startDate.Format("2006-01-02"), endDate.Format("2006-01-02"), limit)
|
||||||
return result, err
|
return result, err
|
||||||
|
@ -29,12 +29,6 @@ func New(c *Config) *sqlstore {
|
|||||||
// write log statement
|
// write log statement
|
||||||
log.Infof("Connected to %s database: %s", c.Driver, c.Name)
|
log.Infof("Connected to %s database: %s", c.Driver, c.Name)
|
||||||
|
|
||||||
// Driver specific database options
|
|
||||||
if c.Driver == "mysql" {
|
|
||||||
// Because SQLite doesn't have CONCAT, tell MySQL to accept pipes for concatenating string columns
|
|
||||||
db.Exec("SET sql_mode=PIPES_AS_CONCAT;")
|
|
||||||
}
|
|
||||||
|
|
||||||
// run migrations
|
// run migrations
|
||||||
db.Migrate()
|
db.Migrate()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user