ingredient/info: Add Fetcher concept

This commit is contained in:
Tom Wiesing 2022-10-19 10:50:40 +02:00
parent a6501b42c7
commit 52559e4d68
No known key found for this signature in database
22 changed files with 447 additions and 328 deletions

View file

@ -0,0 +1,48 @@
package ingredient
import (
"time"
"github.com/FAU-CDI/wisski-distillery/internal/models"
"github.com/FAU-CDI/wisski-distillery/internal/wisski/ingredient/php/phpserver"
)
// Fetcher is an ingredient with a fetch method
type Fetcher interface {
Ingredient
// Fetch fetchs information with the given information and writes it into info.
// Distinct Fetchers must write into distinct fields.
Fetch(flags FetchFlags, info *Information) error
}
// FetchFlags specifies what information to fetch
type FetchFlags struct {
Quick bool
Server *phpserver.Server
}
// Information represents fetched information about a WissKI
type Information struct {
Time time.Time // Time this info was built
// Generic Information
Slug string // slug
URL string // complete URL, including http(s)
Locked bool // Is this instance currently locked?
// Information about the running instance
Running bool
LastRebuild time.Time
LastUpdate time.Time
LastCron time.Time
// List of backups made
Snapshots []models.Export
// WissKI content information
NoPrefixes bool // TODO: Move this into the database
Prefixes []string // list of prefixes
Pathbuilders map[string]string // all the pathbuilders
}