Compare commits

..

No commits in common. "3cbbc4a08a871d0b877840e49c73a4e294153e78" and "8b38429a31a940011810b5df97334ca195daec87" have entirely different histories.

2 changed files with 27 additions and 129 deletions

View File

@ -4,8 +4,6 @@ package countdown
import ( import (
"fmt" "fmt"
bh "github.com/timshannon/bolthold" bh "github.com/timshannon/bolthold"
"github.com/velour/catbase/plugins/babbler"
"github.com/velour/catbase/plugins/counter"
"time" "time"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
@ -50,13 +48,35 @@ func (p *CountdownPlugin) scheduleNYE(f func()) {
func (p *CountdownPlugin) newYearRollover() { func (p *CountdownPlugin) newYearRollover() {
log.Debug().Msgf("Happy new year!") log.Debug().Msgf("Happy new year!")
if err := p.clearBabblers(); err != nil { // todo: something about rolling over
log.Error().Err(err).Msgf("error clearing babblers") //tx, err := p.db.Beginx()
//if err != nil {
// logError(err, "error getting transaction")
// return
//}
//q := fmt.Sprintf(`create table counter_%d as select * from counter`, thisYear)
//_, err = tx.Exec(q)
//if err != nil {
// logError(err, "error running insert into")
// logError(tx.Rollback(), "error with insert rollback")
// return
//}
//q = `delete from counter`
//_, err = tx.Exec(q)
//if err != nil {
// logError(err, "error running delete")
// logError(tx.Rollback(), "error with delete rollback")
// return
//}
//err = tx.Commit()
//logError(err, "error committing transaction")
} }
if err := p.archiveCounters(); err != nil { func logError(err error, msg string) {
log.Error().Err(err).Msgf("error clearing babblers") if err == nil {
return
} }
log.Error().Err(err).Msgf(msg)
} }
func (p *CountdownPlugin) nyeCountdown(i int) { func (p *CountdownPlugin) nyeCountdown(i int) {
@ -66,47 +86,3 @@ func (p *CountdownPlugin) nyeCountdown(i int) {
p.b.Send(p.b.DefaultConnector(), bot.Message, ch, msg, msg) p.b.Send(p.b.DefaultConnector(), bot.Message, ch, msg, msg)
} }
} }
func (p *CountdownPlugin) clearBabblers() error {
if err := p.store.DeleteMatching(babbler.Babbler{}, &bh.Query{}); err != nil {
return err
}
if err := p.store.DeleteMatching(babbler.BabblerArc{}, &bh.Query{}); err != nil {
return err
}
if err := p.store.DeleteMatching(babbler.BabblerNode{}, &bh.Query{}); err != nil {
return err
}
if err := p.store.DeleteMatching(babbler.BabblerWord{}, &bh.Query{}); err != nil {
return err
}
return nil
}
type counterArchive struct {
counter.Item
ID uint64 `boltholdKey:"ID"`
Year int
}
func (p *CountdownPlugin) archiveCounters() error {
year := time.Now().Year()
allCounters := []counter.Item{}
if err := p.store.Find(&allCounters, &bh.Query{}); err != nil {
return err
}
for _, c := range allCounters {
ca := counterArchive{Item: c, Year: year}
err := p.store.Insert(bh.NextSequence(), &ca)
if err != nil {
return err
}
}
if err := p.store.DeleteMatching(counter.Item{}, &bh.Query{}); err != nil {
return err
}
return nil
}

View File

@ -1,12 +1,6 @@
package countdown package countdown
import ( import (
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
bh "github.com/timshannon/bolthold"
"github.com/velour/catbase/plugins/babbler"
"github.com/velour/catbase/plugins/counter"
"os"
"testing" "testing"
"time" "time"
@ -15,19 +9,6 @@ import (
"github.com/velour/catbase/bot" "github.com/velour/catbase/bot"
) )
func init() {
output := zerolog.ConsoleWriter{Out: os.Stdout}
log.Logger = log.Output(output).With().Caller().Stack().Logger()
}
func setup() (*bot.MockBot, *CountdownPlugin, func()) {
mb := bot.NewMockBot()
cd := New(mb)
return mb, cd, func() {
mb.TearDown()
}
}
func TestScheduleNewYears(t *testing.T) { func TestScheduleNewYears(t *testing.T) {
mb := bot.NewMockBot() mb := bot.NewMockBot()
p := New(mb) p := New(mb)
@ -43,62 +24,3 @@ func TestScheduleNewYears(t *testing.T) {
assert.True(t, functionTripped) assert.True(t, functionTripped)
} }
func TestClearBabbles(t *testing.T) {
mb, cd, td := setup()
defer td()
b := babbler.Babbler{
Name: "foo",
}
if err := mb.Store().Insert(bh.NextSequence(), &b); err != nil {
t.Fail()
}
if err := mb.Store().Insert(bh.NextSequence(), &b); err != nil {
t.Fail()
}
if err := mb.Store().Insert(bh.NextSequence(), &b); err != nil {
t.Fail()
}
count, err := mb.Store().Count(babbler.Babbler{}, &bh.Query{})
assert.Nil(t, err)
assert.Greater(t, count, 0)
err = cd.clearBabblers()
assert.Nil(t, err)
count, err = mb.Store().Count(babbler.Babbler{}, &bh.Query{})
assert.Nil(t, err)
assert.Equal(t, count, 0)
}
func TestArchiveCounters(t *testing.T) {
mb, cd, td := setup()
defer td()
i := counter.Item{
Nick: "foo",
Item: "bar",
Count: 8,
UserID: "123",
}
if err := mb.Store().Insert(bh.NextSequence(), &i); err != nil {
t.Fail()
}
if err := mb.Store().Insert(bh.NextSequence(), &i); err != nil {
t.Fail()
}
if err := mb.Store().Insert(bh.NextSequence(), &i); err != nil {
t.Fail()
}
count, err := mb.Store().Count(counter.Item{}, &bh.Query{})
assert.Nil(t, err)
assert.Equal(t, count, 3)
err = cd.archiveCounters()
assert.Nil(t, err)
count, err = mb.Store().Count(counter.Item{}, &bh.Query{})
assert.Nil(t, err)
assert.Equal(t, count, 0)
count, err = mb.Store().Count(counterArchive{}, &bh.Query{})
assert.Nil(t, err)
assert.Equal(t, count, 3)
}