(folder string, versions map[string]time.Time)
| 2825 | } |
| 2826 | |
| 2827 | func (m *model) RestoreFolderVersions(folder string, versions map[string]time.Time) (map[string]error, error) { |
| 2828 | m.mut.RLock() |
| 2829 | err := m.checkFolderRunningRLocked(folder) |
| 2830 | fcfg := m.folderCfgs[folder] |
| 2831 | ver := m.folderVersioners[folder] |
| 2832 | m.mut.RUnlock() |
| 2833 | if err != nil { |
| 2834 | return nil, err |
| 2835 | } |
| 2836 | if ver == nil { |
| 2837 | return nil, errNoVersioner |
| 2838 | } |
| 2839 | |
| 2840 | restoreErrors := make(map[string]error) |
| 2841 | |
| 2842 | for file, version := range versions { |
| 2843 | if err := ver.Restore(file, version); err != nil { |
| 2844 | restoreErrors[file] = err |
| 2845 | } |
| 2846 | } |
| 2847 | |
| 2848 | // Trigger scan |
| 2849 | if !fcfg.FSWatcherEnabled { |
| 2850 | go func() { _ = m.ScanFolder(folder) }() |
| 2851 | } |
| 2852 | |
| 2853 | return restoreErrors, nil |
| 2854 | } |
| 2855 | |
| 2856 | func (m *model) Availability(folder string, file protocol.FileInfo, block protocol.BlockInfo) ([]Availability, error) { |
| 2857 | m.mut.RLock() |
nothing calls this directly
no test coverage detected