This commit is contained in:
Erik Winter 2024-10-27 10:08:08 +01:00
parent f7cc1082b9
commit 39e1c46fa5
2 changed files with 23 additions and 10 deletions

View File

@ -2,6 +2,7 @@ package command
import ( import (
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"github.com/urfave/cli/v2" "github.com/urfave/cli/v2"
@ -52,33 +53,46 @@ func Sync(client client.Client, syncRepo storage.Sync, localIDRepo storage.Local
return fmt.Errorf("could not receive updates: %v", err) return fmt.Errorf("could not receive updates: %v", err)
} }
// import to local updated := make([]item.Item, 0)
for _, ri := range recItems {
if ri.Deleted {
if err := localIDRepo.Delete(ri.ID); err != nil {
return fmt.Errorf("could not delete local id: %v", err)
}
if err := eventRepo.Delete(ri.ID); err != nil && !errors.Is(err, storage.ErrNotFound) {
return fmt.Errorf("could not delete event: %v", err)
}
continue
}
updated = append(updated, ri)
}
lidMap, err := localIDRepo.FindAll() lidMap, err := localIDRepo.FindAll()
if err != nil { if err != nil {
return fmt.Errorf("could not get local ids: %v", err) return fmt.Errorf("could not get local ids: %v", err)
} }
for _, ri := range recItems { for _, u := range updated {
var eBody item.EventBody var eBody item.EventBody
if err := json.Unmarshal([]byte(ri.Body), &eBody); err != nil { if err := json.Unmarshal([]byte(u.Body), &eBody); err != nil {
return fmt.Errorf("could not unmarshal event body: %v", err) return fmt.Errorf("could not unmarshal event body: %v", err)
} }
e := item.Event{ e := item.Event{
ID: ri.ID, ID: u.ID,
EventBody: eBody, EventBody: eBody,
} }
if err := eventRepo.Store(e); err != nil { if err := eventRepo.Store(e); err != nil {
return fmt.Errorf("could not store event: %v", err) return fmt.Errorf("could not store event: %v", err)
} }
lid, ok := lidMap[ri.ID] lid, ok := lidMap[u.ID]
if !ok { if !ok {
lid, err = localIDRepo.Next() lid, err = localIDRepo.Next()
if err != nil { if err != nil {
return fmt.Errorf("could not get next local id: %v", err) return fmt.Errorf("could not get next local id: %v", err)
} }
}
if err := localIDRepo.Store(ri.ID, lid); err != nil { if err := localIDRepo.Store(u.ID, lid); err != nil {
return fmt.Errorf("could not store local id: %v", err) return fmt.Errorf("could not store local id: %v", err)
}
} }
} }

View File

@ -30,7 +30,6 @@ func main() {
os.Exit(1) os.Exit(1)
} }
fmt.Printf("%+v\n", conf)
syncClient := client.New(conf.SyncURL, conf.ApiKey) syncClient := client.New(conf.SyncURL, conf.ApiKey)
app := &cli.App{ app := &cli.App{