mirror of https://github.com/pikami/cosmium.git
Load state from '-Persist' path if '-InitialData' not supplied
This commit is contained in:
parent
3aeae98404
commit
b9e38575bc
|
@ -23,9 +23,7 @@ Cosmium is available for the following platforms:
|
|||
Once downloaded, you can launch Cosmium using the following command:
|
||||
|
||||
```sh
|
||||
./cosmium-linux-amd64 \
|
||||
-Persist "./save.json" \
|
||||
-InitialData "./save.json"
|
||||
cosmium -Persist "./save.json"
|
||||
```
|
||||
|
||||
Connection String Example:
|
||||
|
@ -51,7 +49,7 @@ To disable SSL and run Cosmium on HTTP instead, you can use the `-DisableTls` fl
|
|||
* **-DisableAuth**: Disable authentication
|
||||
* **-Host**: Hostname (default "localhost")
|
||||
* **-InitialData**: Path to JSON containing initial state
|
||||
* **-Persist**: Saves data to the given path on application exit
|
||||
* **-Persist**: Saves data to the given path on application exit (When `-InitialData` argument is not supplied, it will try to load data from path supplied in `-Persist`)
|
||||
* **-Port**: Listen port (default 8081)
|
||||
|
||||
These arguments allow you to configure various aspects of Cosmium's behavior according to your requirements.
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
"os"
|
||||
"reflect"
|
||||
|
||||
"github.com/pikami/cosmium/api/config"
|
||||
repositorymodels "github.com/pikami/cosmium/internal/repository_models"
|
||||
)
|
||||
|
||||
|
@ -19,15 +20,39 @@ var storeState = repositorymodels.State{
|
|||
Documents: make(map[string]map[string]map[string]repositorymodels.Document),
|
||||
}
|
||||
|
||||
func InitializeRepository() {
|
||||
if config.Config.InitialDataFilePath != "" {
|
||||
LoadStateFS(config.Config.InitialDataFilePath)
|
||||
return
|
||||
}
|
||||
|
||||
if config.Config.PersistDataFilePath != "" {
|
||||
stat, err := os.Stat(config.Config.PersistDataFilePath)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if stat.IsDir() {
|
||||
fmt.Println("Argument '-Persist' must be a path to file, not a directory.")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
LoadStateFS(config.Config.PersistDataFilePath)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func LoadStateFS(filePath string) {
|
||||
data, err := os.ReadFile(filePath)
|
||||
if err != nil {
|
||||
log.Fatalf("Error reading state JSON file: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
var state repositorymodels.State
|
||||
if err := json.Unmarshal(data, &state); err != nil {
|
||||
log.Fatalf("Error unmarshalling state JSON: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println("Loaded state:")
|
||||
|
|
Loading…
Reference in New Issue