initial commit

This commit is contained in:
Stian Fredrik Aune
2021-05-20 22:03:23 +02:00
commit 5a56763526
21 changed files with 661 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
package services
import (
"context"
"git.aiterp.net/lucifer/server3/app/config"
"git.aiterp.net/lucifer/server3/models"
"log"
"time"
)
func StartEventHandler() {
config.EventChannel<-models.Event{Name: "LuciferStarted"}
go func() {
for event := range config.EventChannel {
handleEvent(event)
}
}()
// Dispatch an HourChanged event at every hour
go func() {
for {
now := time.Now()
nextHour := now.Add(time.Hour).Truncate(time.Hour)
time.Sleep(nextHour.Sub(now))
config.EventChannel <- models.Event{Name: "HourChanged"}
}
}()
}
var loc, _ = time.LoadLocation("Europe/Oslo")
var ctx = context.Background()
func handleEvent(event models.Event) {
if !event.HasPayload("hour") {
event.AddPayload("hour", time.Now().In(loc).Format("15"))
}
handlers, err := config.EventHandlerRepository().FetchAll(ctx)
if err != nil {
log.Printf("Error fetchin event halders: %d", err)
return
}
for _, handler := range handlers {
devices, err := config.DeviceRepository().FetchByReference(ctx, handler.TargetKind, handler.TargetValue)
if err != nil {
log.Printf("Error fetchin event halders: %d", err)
return
}
if !handler.MatchesEvent(event, devices) {
continue
}
panic("panik")
}
}