wisski-cloud-distillery/internal/dis/component/server/admin/socket/actions/snapshot.go
2023-11-10 19:37:24 +01:00

45 lines
921 B
Go

package actions
import (
"context"
"io"
"github.com/FAU-CDI/wisski-distillery/internal/dis/component"
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/auth/scopes"
"github.com/FAU-CDI/wisski-distillery/internal/dis/component/exporter"
"github.com/FAU-CDI/wisski-distillery/internal/wisski"
)
type Snapshot struct {
component.Base
dependencies struct {
Exporter *exporter.Exporter
}
}
var (
_ WebsocketInstanceAction = (*Snapshot)(nil)
)
func (*Snapshot) Action() InstanceAction {
return InstanceAction{
Action: Action{
Name: "snapshot",
Scope: scopes.ScopeUserAdmin,
NumParams: 0,
},
}
}
func (s *Snapshot) Act(ctx context.Context, instance *wisski.WissKI, in io.Reader, out io.Writer, params ...string) error {
return s.dependencies.Exporter.MakeExport(
ctx,
out,
exporter.ExportTask{
Dest: "",
Instance: instance,
StagingOnly: false,
},
)
}