package scenario_archive import ( "context" "evening_detective_server/internal/modules/storytelling" ) // FileName is the name of the scenario description inside an archive. const FileName = "scenario.json" // Version is the current scenario.json format version. const Version = 1 type ScenarioJSON struct { Version int `json:"version"` Name string `json:"name"` Description string `json:"description,omitempty"` Image string `json:"image,omitempty"` Story *storytelling.Story `json:"story"` } type Scenario struct { Name string Description *string Image *string Story string } // Bundle contains an archived scenario and its metadata. type Bundle struct { Scenario *ScenarioJSON Files map[string][]byte } type IScenarioArchive interface { Pack( ctx context.Context, scenario *Scenario, domain string, getFile func(ctx context.Context, name string) ([]byte, error), ) ([]byte, error) Unpack(data []byte) (*Bundle, error) }