diff options
| author | Ognjen Cirkovic <ciraboxkg@gmail.com> | 2022-03-21 18:43:27 +0100 | 
|---|---|---|
| committer | Ognjen Cirkovic <ciraboxkg@gmail.com> | 2022-03-21 18:43:27 +0100 | 
| commit | cb1dafcef1dcf491788e115e3f63665e80ca2071 (patch) | |
| tree | dc1c507ddd7ffea72a0b4ce0ddcf145a0dea4875 /backend/api | |
| parent | eb99a65bf8fe1679066d223fe7ff514aee9c6244 (diff) | |
Omoguceno brisanje i temp modela i dataseta.
Diffstat (limited to 'backend/api')
| -rw-r--r-- | backend/api/api/Services/FileService.cs | 19 | ||||
| -rw-r--r-- | backend/api/api/Services/IFileService.cs | 2 | ||||
| -rw-r--r-- | backend/api/api/Services/TempFileService.cs | 8 | ||||
| -rw-r--r-- | backend/api/api/Services/TempRemovalService.cs | 62 | 
4 files changed, 67 insertions, 24 deletions
| diff --git a/backend/api/api/Services/FileService.cs b/backend/api/api/Services/FileService.cs index 2467616e..b02d0da4 100644 --- a/backend/api/api/Services/FileService.cs +++ b/backend/api/api/Services/FileService.cs @@ -30,23 +30,6 @@ namespace api.Services                  return null;              return file.path;          } -        public void Delete(string id) -        { -            _file.DeleteOne(file => file._id == id); - -        } -        public void DeleteTempFiles() -        { -            List<FileModel> files = _file.Find(file => file.username == "").ToList(); -            foreach (var file in files) -            { -                if ((DateTime.Now.ToUniversalTime() - file.date).TotalDays >= 1) -                { -                    Delete(file._id); -                    if (File.Exists(file.path)) -                        File.Delete(file.path); -                } -            } -        } +              }  } diff --git a/backend/api/api/Services/IFileService.cs b/backend/api/api/Services/IFileService.cs index 66bfc93d..7446e283 100644 --- a/backend/api/api/Services/IFileService.cs +++ b/backend/api/api/Services/IFileService.cs @@ -5,8 +5,6 @@ namespace api.Services      public interface IFileService      {          FileModel Create(FileModel file); -        void Delete(string id); -        void DeleteTempFiles();          string GetFilePath(string id, string username);      }  }
\ No newline at end of file diff --git a/backend/api/api/Services/TempFileService.cs b/backend/api/api/Services/TempFileService.cs index 297f5ef4..adfe8c75 100644 --- a/backend/api/api/Services/TempFileService.cs +++ b/backend/api/api/Services/TempFileService.cs @@ -5,16 +5,16 @@ namespace api.Services  {      public class TempFileService : IHostedService      { -        private readonly FileService _fileService; +        private readonly TempRemovalService _removalService;          private Timer _timer;          public TempFileService(IUserStoreDatabaseSettings settings, IMongoClient mongoClient)          { -            _fileService = new FileService(settings,mongoClient); +            _removalService = new TempRemovalService(settings, mongoClient);          }          public Task StartAsync(CancellationToken cancellationToken)          { -            _timer = new Timer(RemoveTempFiles,null,TimeSpan.Zero,TimeSpan.FromHours(3)); +            _timer = new Timer(RemoveTempFiles,null,TimeSpan.Zero,TimeSpan.FromHours(6));              return Task.CompletedTask; @@ -27,7 +27,7 @@ namespace api.Services          }          private void RemoveTempFiles(object state)          { -            _fileService.DeleteTempFiles(); +            _removalService.DeleteTemps();          }      }  } diff --git a/backend/api/api/Services/TempRemovalService.cs b/backend/api/api/Services/TempRemovalService.cs new file mode 100644 index 00000000..6e99945b --- /dev/null +++ b/backend/api/api/Services/TempRemovalService.cs @@ -0,0 +1,62 @@ +using api.Interfaces; +using api.Models; +using MongoDB.Driver; + +namespace api.Services +{ +    public class TempRemovalService +    { +        private readonly IMongoCollection<FileModel> _file; +        private readonly IMongoCollection<Model> _model; +        private readonly IMongoCollection<Dataset> _dataset; + +        public TempRemovalService(IUserStoreDatabaseSettings settings, IMongoClient mongoClient) +        { +            var database = mongoClient.GetDatabase(settings.DatabaseName); +            _file = database.GetCollection<FileModel>(settings.FilesCollectionName); +            _model= database.GetCollection<Model>(settings.ModelCollectionName); +            _dataset = database.GetCollection<Dataset>(settings.DatasetCollectionName); +        } +        public void DeleteTemps() +        { +            List<FileModel> files = _file.Find(file => file.username == "").ToList(); +            foreach (var file in files) +            { +                if ((DateTime.Now.ToUniversalTime() - file.date).TotalDays >= 1) +                { +                    DeleteFile(file._id); +                    List<Dataset> datasets = _dataset.Find(dataset => dataset.fileId == file._id).ToList(); +                    foreach(var dataset in datasets) +                    { +                        DeleteDataset(dataset._id); +                        List<Model> models = _model.Find(model => model.datasetId == dataset._id).ToList(); +                        foreach(var model in models) +                        { +                            DeleteModel(model._id); +                        } +                    } +                    if (File.Exists(file.path)) +                        File.Delete(file.path); +                } +            } +        } + + + + +        public void DeleteFile(string id) +        { +            _file.DeleteOne(file => file._id == id); +        } +        public void DeleteModel(string id) +        { +            _model.DeleteOne(model=>model._id==id); +        } +        public void DeleteDataset(string id) +        { +            _dataset.DeleteOne(dataset => dataset._id == id); +        } + + +    } +} | 
