package appstate import ( "fmt" "git.julianfamily.org/keepassgo/vault" ) type SyncMode string const ( SyncModeManual SyncMode = "manual" SyncModeAutomaticOnOpenSave SyncMode = "automatic_on_open_save" ) type RemoteBinding struct { LocalVaultPath string `json:"localVaultPath"` RemoteProfileID string `json:"remoteProfileId"` CredentialEntryID string `json:"credentialEntryId"` SyncMode SyncMode `json:"syncMode,omitempty"` } type ResolvedRemoteBinding struct { Profile vault.RemoteProfile Credentials vault.Entry } func (b RemoteBinding) Resolve(model vault.Model) (ResolvedRemoteBinding, error) { profile, err := model.RemoteProfileByID(b.RemoteProfileID) if err != nil { return ResolvedRemoteBinding{}, fmt.Errorf("resolve remote profile: %w", err) } credentials, err := model.EntryByID(b.CredentialEntryID) if err != nil { return ResolvedRemoteBinding{}, fmt.Errorf("resolve remote credentials: %w", err) } return ResolvedRemoteBinding{ Profile: profile, Credentials: credentials, }, nil }