2025-11-11 06:30:02 +01:00

64 lines
1.0 KiB
Go

// Copyright 2025 Thomas Hedeler
// Author: Thomas Hedeler
package server
import (
"context"
"embed"
"io/fs"
"ld/eventbus"
"ld/interval"
"ld/sqlite"
"log"
"net/http"
"text/template"
)
type Server struct {
Ctx context.Context
StateDB *sqlite.Database
Static fs.FS
Embedded embed.FS
intervalID int
Ebus *eventbus.EventBus
Templ *template.Template
Mux *http.ServeMux
}
func New(
stateDB *sqlite.Database,
embedded embed.FS,
ebus *eventbus.EventBus,
) (*Server, error) {
// creating the server
return &Server{
StateDB: stateDB,
Embedded: embedded,
Ebus: ebus,
}, nil
}
func (s *Server) Start() error {
// // start the task engine
s.intervalID = interval.SetInterval(s.interval, 1000) // check for executable tasks every 1 second
return nil
}
func (s *Server) Close() error {
// stop the task engine
err := interval.ClearInterval(s.intervalID)
if err != nil {
log.Print(err)
}
err = s.StateDB.Close()
if err != nil {
log.Print(err)
}
return err
}