package common

// EXPERIMENTAL
import (
	"errors"
)

var StatStore StatStoreInt

type StatStoreInt interface {
	LookupInt(name string, duration int, unit string) (int, error)
}

type DefaultStatStore struct {
}

func NewDefaultStatStore() *DefaultStatStore {
	return &DefaultStatStore{}
}

func (store *DefaultStatStore) LookupInt(name string, duration int, unit string) (int, error) {
	switch name {
	case "postCount":
		return store.countTable("replies", duration, unit)
	}
	return 0, errors.New("The requested stat doesn't exist")
}

func (store *DefaultStatStore) countTable(table string, duration int, unit string) (stat int, err error) {
	/*counter := qgen.NewAcc().Count("replies").DateCutoff("createdAt", 1, "day").Prepare()
	if acc.FirstError() != nil {
		return 0, acc.FirstError()
	}
	err := counter.QueryRow().Scan(&stat)*/
	return stat, err
}

//stmts.todaysPostCount, err = db.Prepare("select count(*) from replies where createdAt BETWEEN (utc_timestamp() - interval 1 day) and utc_timestamp()")