Issue 24: Added read-only mode (#27)

- Added settings to workspace, and added the read-only mode
- Added the `-ro` field which will launch Dynamo-Browse in read-only mode
- Added the `set ro` to enable read-only mode, and `set rw` to enable read-write mode
This commit is contained in:
Leon Mika 2022-09-29 22:10:18 +10:00 committed by GitHub
parent a1717572c5
commit 93ec519127
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 623 additions and 315 deletions

View file

@ -14,6 +14,7 @@ import (
"github.com/lmika/audax/internal/common/workspaces"
"github.com/lmika/audax/internal/dynamo-browse/controllers"
"github.com/lmika/audax/internal/dynamo-browse/providers/dynamo"
"github.com/lmika/audax/internal/dynamo-browse/providers/settingstore"
"github.com/lmika/audax/internal/dynamo-browse/providers/workspacestore"
"github.com/lmika/audax/internal/dynamo-browse/services/itemrenderer"
keybindings_service "github.com/lmika/audax/internal/dynamo-browse/services/keybindings"
@ -32,6 +33,7 @@ func main() {
var flagTable = flag.String("t", "", "dynamodb table name")
var flagLocal = flag.String("local", "", "local endpoint")
var flagDebug = flag.String("debug", "", "file to log debug messages")
var flagRO = flag.Bool("ro", false, "enable readonly mode")
var flagWorkspace = flag.String("w", "", "workspace file")
flag.Parse()
@ -73,14 +75,22 @@ func main() {
uiStyles := styles.DefaultStyles
dynamoProvider := dynamo.NewProvider(dynamoClient)
resultSetSnapshotStore := workspacestore.NewResultSetSnapshotStore(ws)
settingStore := settingstore.New(ws)
tableService := tables.NewService(dynamoProvider)
if *flagRO {
if err := settingStore.SetReadOnly(*flagRO); err != nil {
cli.Fatalf("unable to set read-only mode: %v", err)
}
}
tableService := tables.NewService(dynamoProvider, settingStore)
workspaceService := workspaces_service.NewService(resultSetSnapshotStore)
itemRendererService := itemrenderer.NewService(uiStyles.ItemView.FieldType, uiStyles.ItemView.MetaInfo)
state := controllers.NewState()
tableReadController := controllers.NewTableReadController(state, tableService, workspaceService, itemRendererService, *flagTable, true)
tableWriteController := controllers.NewTableWriteController(state, tableService, tableReadController)
tableWriteController := controllers.NewTableWriteController(state, tableService, tableReadController, settingStore)
settingsController := controllers.NewSettingsController(settingStore)
keyBindings := keybindings.Default()
keyBindingService := keybindings_service.NewService(keyBindings)
@ -91,6 +101,7 @@ func main() {
model := ui.NewModel(
tableReadController,
tableWriteController,
settingsController,
itemRendererService,
commandController,
keyBindingController,