package storage

type Interface interface {
	TermInterface
	RevisionInterface
}

type TermInterface interface {
	CreateTerm(term *Term) error
	UpdateTerm(term *Term) error
	RemoveTerm(term *Term) error
	GetTermByName(name string) (*Term, error)
	GetTermBySlug(slug string) (*Term, error)
	GetTermByID(id string) (*Term, error)
	GetTerms() ([]*Term, error)
}

type RevisionInterface interface {
	CreateRevision(revision *Revision) error
	RemoveRevision(revision *Revision) error
	RemoveRevisionsByTermID(termID string) error
	GetRevisionByTermName(termName string) (*Revision, error)
	GetRevisionByTermSlug(termSlug string) (*Revision, error)
	GetRevisionByTermID(termID string) (*Revision, error)
	GetRevisionByID(id string) (*Revision, error)
	GetRevisions() ([]*Revision, error)
}
