package crontab

import (
	"github.com/robfig/cron/v3"
)

var _ Crontab = (*crontab)(nil)

type Crontab interface {
	i()
	AddFunc(spec string, cmd func()) (entryID cron.EntryID, err error)
	Entries() []cron.Entry
	Stop()
}

type crontab struct {
	cron *cron.Cron
}

func New() Crontab {
	return &crontab{
		cron: cron.New(),
	}
}

func (c *crontab) i() {}

func (c *crontab) AddFunc(spec string, cmd func()) (entryID cron.EntryID, err error) {
	entryID, err = c.cron.AddFunc(spec, cmd)
	c.cron.Start()
	return
}

func (c *crontab) Stop() {
	c.cron.Stop()
}

func (c *crontab) Entries() []cron.Entry {
	return c.cron.Entries()
}