aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/api/api/Services/FileService.cs19
-rw-r--r--backend/api/api/Services/IFileService.cs2
-rw-r--r--backend/api/api/Services/TempFileService.cs8
-rw-r--r--backend/api/api/Services/TempRemovalService.cs62
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);
+ }
+
+
+ }
+}