Add "count" view
This commit is contained in:
parent
b270ed6299
commit
022bbebe48
|
@ -58,7 +58,7 @@ You can request statistics via the `/stats` endpoint and specifying filters via
|
|||
|
||||
The following filters are available:
|
||||
|
||||
`view`: specify what data (and it's view counts) gets displayed, you have the option between `pages` (tracked URLS), `referrers` (tracked refererrers - only hostnames e.g. google.com), `useragents` (tracked useragents with version - browsers or crawl bots with version), `useragentnames` (tracked useragents without version), `hours` / `days` / `weeks` / `months` (tracks grouped by hours / days / weeks / months), `allhours` / `alldays` (tracks grouped by hours / days including hours or days with zero visits, spanning from first to last track in selection)
|
||||
`view`: specify what data (and it's view counts) gets displayed, you have the option between `pages` (tracked URLS), `referrers` (tracked refererrers - only hostnames e.g. google.com), `useragents` (tracked useragents with version - browsers or crawl bots with version), `useragentnames` (tracked useragents without version), `hours` / `days` / `weeks` / `months` (tracks grouped by hours / days / weeks / months), `allhours` / `alldays` (tracks grouped by hours / days including hours or days with zero visits, spanning from first to last track in selection), `count` (count all tracked views where filters apply)
|
||||
|
||||
`from`: start time of the selection in the format `YYYY-MM-DD HH:MM`, e.g. `2019-01` or `2019-01-01 01:00`
|
||||
|
||||
|
|
47
database.go
47
database.go
|
@ -82,6 +82,7 @@ const (
|
|||
MONTHS
|
||||
ALLHOURS
|
||||
ALLDAYS
|
||||
COUNT
|
||||
)
|
||||
|
||||
type ViewsRequest struct {
|
||||
|
@ -112,26 +113,34 @@ func (db *Database) request(request *ViewsRequest) (resultRows []*RequestResultR
|
|||
rows, e := db.sqlDB.Query(statement, namedArgs...)
|
||||
if e != nil {
|
||||
return
|
||||
} else {
|
||||
resultRows = []*RequestResultRow{}
|
||||
for rows.Next() {
|
||||
var first string
|
||||
var second int
|
||||
e = rows.Scan(&first, &second)
|
||||
if e != nil {
|
||||
_ = rows.Close()
|
||||
return
|
||||
}
|
||||
if first == "" {
|
||||
first = "Undefined"
|
||||
}
|
||||
resultRows = append(resultRows, &RequestResultRow{
|
||||
First: first,
|
||||
Second: second,
|
||||
})
|
||||
}
|
||||
}
|
||||
columns, e := rows.Columns()
|
||||
if e != nil {
|
||||
return
|
||||
}
|
||||
noOfColumns := len(columns)
|
||||
resultRows = []*RequestResultRow{}
|
||||
for rows.Next() {
|
||||
var first string
|
||||
var second int
|
||||
if noOfColumns == 2 {
|
||||
e = rows.Scan(&first, &second)
|
||||
} else if noOfColumns == 1 {
|
||||
e = rows.Scan(&second)
|
||||
}
|
||||
if e != nil {
|
||||
_ = rows.Close()
|
||||
return
|
||||
}
|
||||
if first == "" {
|
||||
first = "Undefined"
|
||||
}
|
||||
resultRows = append(resultRows, &RequestResultRow{
|
||||
First: first,
|
||||
Second: second,
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (request *ViewsRequest) buildStatement() (statement string, parameters []sql.NamedArg) {
|
||||
|
@ -181,6 +190,8 @@ func (request *ViewsRequest) buildStatement() (statement string, parameters []sq
|
|||
format = "%Y-%m"
|
||||
}
|
||||
statement = "SELECT strftime('" + format + "', time, 'localtime') as first, count(*) as second from views" + filters + "group by first" + orderStatement + limitStatement + ";"
|
||||
case COUNT:
|
||||
statement = "SELECT count(*) as second from views" + filters + ";"
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
Reference in New Issue