feat: add new features such as database watchdog

This commit is contained in:
DaanSelen
2026-04-21 16:27:04 +02:00
parent 610fdffdb8
commit c4a4fafb52
16 changed files with 428 additions and 158 deletions
+38 -17
View File
@@ -1,44 +1,65 @@
package runtime
import (
"log/slog"
"os"
"path/filepath"
"strconv"
)
type Environment struct {
Version string
Codename string
Hostname string
Port string
WorkDir string
Version string
Codename string
DataDirectory string
ContentDirectory string
Hostname string
Port int
WatchInterval int
}
func safeGrab(key, fallback string) string {
// part of environment checking
func safeStringGrab(key, fallback string) string {
if v, ok := os.LookupEnv(key); ok {
return v
}
return fallback
}
func safeIntGrab(key string, fallback int) int {
if v, ok := os.LookupEnv(key); ok {
if i, err := strconv.Atoi(v); err == nil {
return i
}
}
return fallback
}
func GrabEnvironment() Environment {
cwd, err := os.Getwd()
if err != nil {
cwd = "."
}
fbBase := filepath.Join(cwd, "data")
fbContent := filepath.Join(fbBase, "content")
return Environment{
Version: safeGrab("VERSION", "0.0.1"),
Codename: safeGrab("CODENAME", "Magical Anomaly"),
Hostname: safeGrab("HOSTNAME", "0.0.0.0"),
Port: safeGrab("PORT", "8080"),
WorkDir: safeGrab("OPERATIONDIR", "."),
Version: safeStringGrab("VERSION", "0.0.1"),
Codename: safeStringGrab("CODENAME", "Magical Anomaly"),
DataDirectory: safeStringGrab("DATA_DIR", fbBase),
ContentDirectory: safeStringGrab("CONTENT_DIR", fbContent),
Hostname: safeStringGrab("HOSTNAME", "0.0.0.0"),
Port: safeIntGrab("PORT", 8080),
WatchInterval: safeIntGrab("WATCHDOG_INTERVAL", 60),
}
}
// part of filesystem checking
func EnsureOperation(workDir string) error {
slog.Info("starting audit on: " + workDir)
nDirs := []string{
workDir,
filepath.Join(workDir, "content"),
filepath.Join(workDir, "content", "fresh"),
filepath.Join(workDir, "content", "archive"),
filepath.Join(workDir, "data"),
filepath.Join(workDir, "data", "content"),
filepath.Join(workDir, "web"),
}