(siteID int64)
| 65 | } |
| 66 | |
| 67 | func (db *sqlstore) GetRealtimeVisitorCount(siteID int64) (int64, error) { |
| 68 | var siteTrackingID string |
| 69 | if err := db.Get(&siteTrackingID, db.Rebind(`SELECT tracking_id FROM sites WHERE id = ? LIMIT 1`), siteID); err != nil && err != sql.ErrNoRows { |
| 70 | log.Error(err) |
| 71 | return 0, mapError(err) |
| 72 | } |
| 73 | |
| 74 | var sql string |
| 75 | var total int64 |
| 76 | |
| 77 | // for backwards compatibility with tracking snippets without an explicit site tracking ID (< 1.1.0) |
| 78 | if siteID == 1 { |
| 79 | sql = `SELECT COUNT(*) FROM pageviews p WHERE ( site_tracking_id = ? OR site_tracking_id = '' ) AND is_finished = FALSE AND timestamp > ?` |
| 80 | } else { |
| 81 | sql = `SELECT COUNT(*) FROM pageviews p WHERE site_tracking_id = ? AND is_finished = FALSE AND timestamp > ?` |
| 82 | } |
| 83 | |
| 84 | query := db.Rebind(sql) |
| 85 | if err := db.Get(&total, query, siteTrackingID, time.Now().Add(-5*time.Minute)); err != nil { |
| 86 | return 0, mapError(err) |
| 87 | } |
| 88 | |
| 89 | return total, nil |
| 90 | } |
nothing calls this directly
no test coverage detected