39 lines
948 B
Go
39 lines
948 B
Go
package store
|
|
|
|
import "github.uio.no/torjus/apiary/models"
|
|
|
|
type LoginStats string
|
|
|
|
const (
|
|
LoginStatsUndefined LoginStats = ""
|
|
LoginStatsPasswords LoginStats = "password"
|
|
LoginStatsCountry LoginStats = "country"
|
|
LoginStatsIP LoginStats = "ip"
|
|
LoginStatsUsername LoginStats = "username"
|
|
LoginStatsTotals LoginStats = "total"
|
|
)
|
|
|
|
type AttemptQueryType string
|
|
|
|
const (
|
|
AttemptQueryTypeUsername AttemptQueryType = "username"
|
|
AttemptQueryTypePassword AttemptQueryType = "password"
|
|
AttemptQueryTypeIP AttemptQueryType = "ip"
|
|
)
|
|
|
|
type StatsResult struct {
|
|
Name string `json:"name"`
|
|
Count int `json:"count"`
|
|
}
|
|
|
|
type AttemptQuery struct {
|
|
QueryType AttemptQueryType
|
|
Query string
|
|
}
|
|
type LoginAttemptStore interface {
|
|
AddAttempt(l *models.LoginAttempt) error
|
|
All() ([]models.LoginAttempt, error)
|
|
Stats(statType LoginStats, limit int) ([]StatsResult, error)
|
|
Query(query AttemptQuery) ([]models.LoginAttempt, error)
|
|
}
|