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)
|
||
|
}
|
||
|
}
|
||
|
}
|