diff options
Diffstat (limited to 'backend')
-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); + } + + + } +} |