42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
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
|
|
}
|