feat: add basic workings

This commit is contained in:
2026-04-29 23:38:43 +02:00
parent da3dee9ae7
commit 76c893ae7e
14 changed files with 167 additions and 112 deletions
+19 -23
View File
@@ -4,41 +4,37 @@ import (
"log/slog"
"orbits-server/internal/server/bootstrap"
"orbits-server/internal/server/database"
"orbits-server/internal/server/service"
"os"
"path/filepath"
"time"
"gorm.io/gorm"
)
func revokeExpired(db *gorm.DB) {
now := time.Now()
if err := db.Model(&database.AccessKey{}).
Where("expires_at < ? AND revoked = ?", now, false).
Update("revoked", true).Error; err != nil {
slog.Error("failed to revoke expired keys", "error", err)
}
}
func applyFS(env bootstrap.Environment, db *gorm.DB, fsOrphans []string) {
fileService := service.NewFileService(db, env)
for _, fp := range fsOrphans {
switch env.WatchdogSyncMode {
case "sync":
f, err := os.Open(fp)
if err != nil {
continue
}
func() {
defer f.Close()
fileData, err := database.BuildFileRecord(
f,
filepath.Base(fp),
env.ContentDirectory,
)
if err != nil {
return
}
_ = database.CreateFile(db, &fileData)
_ = os.Rename(fp, fileData.FilePath)
}()
fileService.SyncFile(fp)
case "strict":
_ = os.Remove(fp)
if err := os.Remove(fp); err != nil {
slog.Error("failed to remove file", "error", err)
continue
}
case "dry":
slog.Debug("dry mode", "file", fp)