Add reinstate feature for deleted files
- Add MarkNotDeleted method to repository - Add ReinstateFile method to service - Add AdminReinstate handler - Add /reinstate/:id route - Add Reinstate button in admin menu for deleted files
This commit is contained in:
@@ -134,6 +134,29 @@ func (s *Service) ForceDelete(id string) (*FileRecord, error) {
|
||||
return f, nil
|
||||
}
|
||||
|
||||
func (s *Service) ReinstateFile(id string) (*FileRecord, error) {
|
||||
f, err := s.repo.GetByID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if !f.Deleted {
|
||||
return nil, ErrFileNotFound // or just return f, nil maybe?
|
||||
}
|
||||
|
||||
// Check if file actually exists on disk
|
||||
path := s.storageDir + "/" + f.ID
|
||||
if _, err := os.Stat(path); os.IsNotExist(err) {
|
||||
return nil, ErrFileNotFound
|
||||
}
|
||||
|
||||
if err := s.repo.MarkNotDeleted(f); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return f, nil
|
||||
}
|
||||
|
||||
func (s *Service) GetPaginatedFiles(limit, offset int) ([]FileRecord, int, error) {
|
||||
return s.repo.GetPaginated(limit, offset)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user