33 lines
706 B
Go
33 lines
706 B
Go
package sitebuilder
|
|
|
|
import (
|
|
"lmika.dev/lmika/hugo-cms/models"
|
|
"lmika.dev/lmika/hugo-cms/providers/bus"
|
|
)
|
|
|
|
type SiteBuildingTracker struct {
|
|
bus *bus.Bus
|
|
isBuildingState map[int64]models.Site
|
|
}
|
|
|
|
func NewSiteBuildingTracker(bus *bus.Bus) *SiteBuildingTracker {
|
|
return &SiteBuildingTracker{
|
|
bus: bus,
|
|
isBuildingState: map[int64]models.Site{},
|
|
}
|
|
}
|
|
|
|
func (sbt *SiteBuildingTracker) Listen() {
|
|
sub := sbt.bus.Subscribe()
|
|
|
|
for e := range sub.C {
|
|
switch e.Type {
|
|
case models.EventSiteBuildingStart:
|
|
site := e.Data.(models.Site)
|
|
sbt.isBuildingState[site.ID] = site
|
|
case models.EventSiteBuildingDone:
|
|
delete(sbt.isBuildingState, e.Data.(models.Site).ID)
|
|
}
|
|
}
|
|
}
|