aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/api/api/Controllers/DatasetController.cs62
-rw-r--r--backend/api/api/Controllers/ModelController.cs2
-rw-r--r--backend/api/api/Controllers/PredictorController.cs53
-rw-r--r--backend/api/api/Services/DatasetService.cs19
-rw-r--r--backend/api/api/Services/IDatasetService.cs7
-rw-r--r--backend/api/api/Services/IPredictorService.cs3
-rw-r--r--backend/api/api/Services/PredictorService.cs13
7 files changed, 123 insertions, 36 deletions
diff --git a/backend/api/api/Controllers/DatasetController.cs b/backend/api/api/Controllers/DatasetController.cs
index 7d754a9b..9f2013f5 100644
--- a/backend/api/api/Controllers/DatasetController.cs
+++ b/backend/api/api/Controllers/DatasetController.cs
@@ -22,7 +22,6 @@ namespace api.Controllers
jwtToken = new JwtToken(configuration);
}
-
// GET: api/<DatasetController>/mydatasets
[HttpGet("mydatasets")]
[Authorize(Roles = "User")]
@@ -43,13 +42,16 @@ namespace api.Controllers
//ako bude trebao ID, samo iz baze uzeti
- return _datasetService.GetMyDatesets(username);
+ return _datasetService.GetMyDatasets(username);
}
- // GET: api/<DatasetController>/getlatestdataset/{number}
- [HttpGet("getlatestdatasets/{latest}")]
+ // GET: api/<DatasetController>/datesort/{ascdsc}/{latest}
+ //asc - rastuce 1
+ //desc - opadajuce 0
+ //ako se posalje 0 kao latest onda ce da izlista sve u nekom poretku
+ [HttpGet("datesort/{ascdsc}/{latest}")]
[Authorize(Roles = "User")]
- public ActionResult<List<Dataset>> GetLatestDatasets(int latest)
+ public ActionResult<List<Dataset>> SortDatasets(bool ascdsc, int latest)
{
string username;
var header = Request.Headers[HeaderNames.Authorization];
@@ -64,26 +66,52 @@ namespace api.Controllers
else
return BadRequest();
- //ako bude trebao ID, samo iz baze uzeti
-
- List<Dataset> lista = _datasetService.GetLatestDatasets(username, latest);
-
- List<Dataset> novaLista = new List<Dataset>();
+ List<Dataset> lista = _datasetService.SortDatasets(username, ascdsc, latest);
- for (int i = 0; i < latest; i++)
- novaLista.Add(lista[i]);
- return novaLista;
+ if (latest == 0)
+ return lista;
+ else
+ {
+ List<Dataset> novaLista = new List<Dataset>();
+ for (int i = 0; i < latest; i++)
+ novaLista.Add(lista[i]);
+ return novaLista;
+ }
}
-
// GET: api/<DatasetController>/publicdatasets
[HttpGet("publicdatasets")]
public ActionResult<List<Dataset>> GetPublicDS()
{
- return _datasetService.GetPublicDatesets();
+ return _datasetService.GetPublicDatasets();
+ }
+
+ //SEARCH za datasets (public ili private sa ovim imenom )
+ // GET api/<DatasetController>/search/{name}
+ [HttpGet("search/{name}")]
+ [Authorize(Roles = "User")]
+ public ActionResult<List<Dataset>> Search(string name)
+ {
+ string username;
+ var header = Request.Headers[HeaderNames.Authorization];
+ if (AuthenticationHeaderValue.TryParse(header, out var headerValue))
+ {
+ var scheme = headerValue.Scheme;
+ var parameter = headerValue.Parameter;
+ username = jwtToken.TokenToUsername(parameter);
+ if (username == null)
+ return null;
+ }
+ else
+ return BadRequest();
+
+ //ako bude trebao ID, samo iz baze uzeti
+
+ return _datasetService.SearchDatasets(name, username);
}
+
// GET api/<DatasetController>/{name}
//get odredjeni dataset
[HttpGet("{name}")]
@@ -106,7 +134,7 @@ namespace api.Controllers
var dataset = _datasetService.GetOneDataset(username, name);
if (dataset == null)
- return NotFound($"Dataset with name = {name} or user with username = {username} not found");
+ return NotFound($"Dataset with name = {name} not found or dataset is not public");
return dataset;
}
@@ -168,6 +196,8 @@ namespace api.Controllers
if (existingDataset == null)
return NotFound($"Dataset with name = {name} or user with username = {username} not found");
+ dataset.lastUpdated = DateTime.UtcNow;
+
_datasetService.Update(username, name, dataset);
return Ok($"Dataset with name = {name} updated");
diff --git a/backend/api/api/Controllers/ModelController.cs b/backend/api/api/Controllers/ModelController.cs
index 85fef848..1c5b3763 100644
--- a/backend/api/api/Controllers/ModelController.cs
+++ b/backend/api/api/Controllers/ModelController.cs
@@ -76,7 +76,7 @@ namespace api.Controllers
var model = _modelService.GetOneModel(username, name);
if (model == null)
- return NotFound($"Model with name = {name} or user with username = {username} not found");
+ return NotFound($"Model with name = {name} not found");
return model;
}
diff --git a/backend/api/api/Controllers/PredictorController.cs b/backend/api/api/Controllers/PredictorController.cs
index 66a13aff..7f8f1692 100644
--- a/backend/api/api/Controllers/PredictorController.cs
+++ b/backend/api/api/Controllers/PredictorController.cs
@@ -48,6 +48,33 @@ namespace api.Controllers
return _predictorService.GetPublicPredictors();
}
+
+
+ //SEARCH za predictore (public ili private sa ovim imenom )
+ // GET api/<PredictorController>/search/{name}
+ [HttpGet("search/{name}")]
+ [Authorize(Roles = "User")]
+ public ActionResult<List<Predictor>> Search(string name)
+ {
+ string username;
+ var header = Request.Headers[HeaderNames.Authorization];
+ if (AuthenticationHeaderValue.TryParse(header, out var headerValue))
+ {
+ var scheme = headerValue.Scheme;
+ var parameter = headerValue.Parameter;
+ username = jwtToken.TokenToUsername(parameter);
+ if (username == null)
+ return null;
+ }
+ else
+ return BadRequest();
+
+ //ako bude trebao ID, samo iz baze uzeti
+
+ return _predictorService.SearchPredictors(name, username);
+ }
+
+ //da li da se odvoji search za public i posebno za private?
// GET api/<PredictorController>/{name}
[HttpGet("{name}")]
[Authorize(Roles = "User")]
@@ -69,16 +96,19 @@ namespace api.Controllers
var predictor = _predictorService.GetOnePredictor(username, name);
if (predictor == null)
- return NotFound($"Predictor with name = {name} or user with username = {username} not found");
+ return NotFound($"Predictor with name = {name} not found or predictor is not public");
return predictor;
}
// moze da vraca sve modele pa da se ovde odradi orderByDesc
//odraditi to i u Datasetove i Predictore
- // GET: api/<PredictorController>/getlatestpredictors/{number}
- [HttpGet("getlatestpredictors/{latest}")]
+ // GET: api/<PredictorController>/datesort/{ascdsc}/{latest}
+ //asc - rastuce 1
+ //desc - opadajuce 0
+ //ako se posalje 0 kao latest onda ce da izlista sve u nekom poretku
+ [HttpGet("datesort/{ascdsc}/{latest}")]
[Authorize(Roles = "User")]
- public ActionResult<List<Predictor>> GetLatestPredictors(int latest)
+ public ActionResult<List<Predictor>> SortPredictors(bool ascdsc, int latest)
{
string username;
var header = Request.Headers[HeaderNames.Authorization];
@@ -95,14 +125,19 @@ namespace api.Controllers
//ako bude trebao ID, samo iz baze uzeti
- List<Predictor> lista = _predictorService.GetLatestPredictors(username);
+ List<Predictor> lista = _predictorService.SortPredictors(username, ascdsc, latest);
- List<Predictor> novaLista = new List<Predictor>();
+ if(latest == 0)
+ return lista;
+ else
+ {
+ List<Predictor> novaLista = new List<Predictor>();
- for (int i = 0; i < latest; i++)
- novaLista.Add(lista[i]);
+ for (int i = 0; i < latest; i++)
+ novaLista.Add(lista[i]);
- return novaLista;
+ return novaLista;
+ }
}
// POST api/<PredictorController>/add
[HttpPost("add")]
diff --git a/backend/api/api/Services/DatasetService.cs b/backend/api/api/Services/DatasetService.cs
index 27da2162..5e708d11 100644
--- a/backend/api/api/Services/DatasetService.cs
+++ b/backend/api/api/Services/DatasetService.cs
@@ -13,6 +13,12 @@ namespace api.Services
var database = mongoClient.GetDatabase(settings.DatabaseName);
_dataset = database.GetCollection<Dataset>(settings.DatasetCollectionName);
}
+
+ public List<Dataset> SearchDatasets(string name, string username)
+ {
+ return _dataset.Find(dataset => dataset.name == name && dataset.isPublic == true).ToList();
+ }
+
//kreiranje dataseta
public Dataset Create(Dataset dataset)
{
@@ -26,22 +32,25 @@ namespace api.Services
_dataset.DeleteOne(dataset => (dataset.username == username && dataset.name == name));
}
- public List<Dataset> GetMyDatesets(string username)
+ public List<Dataset> GetMyDatasets(string username)
{
return _dataset.Find(dataset => dataset.username == username).ToList();
}
//poslednji datasetovi
- public List<Dataset> GetLatestDatasets(string username, int latest)
+ public List<Dataset> SortDatasets(string username, bool ascdsc, int latest)
{
List<Dataset> list = _dataset.Find(dataset => dataset.username == username).ToList();
- list = list.OrderByDescending(dataset => dataset.lastUpdated).ToList();
+ if(ascdsc)
+ list = list.OrderBy(dataset => dataset.lastUpdated).ToList();
+ else
+ list = list.OrderByDescending(dataset => dataset.lastUpdated).ToList();
return list;
}
- public List<Dataset> GetPublicDatesets()
+ public List<Dataset> GetPublicDatasets()
{
return _dataset.Find(dataset => dataset.isPublic == true).ToList();
}
@@ -57,5 +66,7 @@ namespace api.Services
{
_dataset.ReplaceOne(dataset => dataset.username == username && dataset.name == name, dataset);
}
+
+
}
}
diff --git a/backend/api/api/Services/IDatasetService.cs b/backend/api/api/Services/IDatasetService.cs
index 40816b4c..be56f5cb 100644
--- a/backend/api/api/Services/IDatasetService.cs
+++ b/backend/api/api/Services/IDatasetService.cs
@@ -6,9 +6,10 @@ namespace api.Services
public interface IDatasetService
{
Dataset GetOneDataset(string username, string name);
- List<Dataset> GetMyDatesets(string username);
- List<Dataset> GetLatestDatasets(string username, int latest);
- List<Dataset> GetPublicDatesets();
+ List<Dataset> SearchDatasets(string name, string username);
+ List<Dataset> GetMyDatasets(string username);
+ List<Dataset> SortDatasets(string username, bool ascdsc, int latest);
+ List<Dataset> GetPublicDatasets();
Dataset Create(Dataset dataset);
void Update(string username, string name, Dataset dataset);
void Delete(string username, string name);
diff --git a/backend/api/api/Services/IPredictorService.cs b/backend/api/api/Services/IPredictorService.cs
index e34ced7f..2017add2 100644
--- a/backend/api/api/Services/IPredictorService.cs
+++ b/backend/api/api/Services/IPredictorService.cs
@@ -6,8 +6,9 @@ namespace api.Services
public interface IPredictorService
{
Predictor GetOnePredictor(string username, string name);
+ List<Predictor> SearchPredictors(string name, string username);
List<Predictor> GetMyPredictors(string username);
- List<Predictor> GetLatestPredictors(string username);
+ List<Predictor> SortPredictors(string username, bool ascdsc, int latest);
List<Predictor> GetPublicPredictors();
Predictor Create(Predictor predictor);
void Update(string username, string name, Predictor predictor);
diff --git a/backend/api/api/Services/PredictorService.cs b/backend/api/api/Services/PredictorService.cs
index d1190440..05860126 100644
--- a/backend/api/api/Services/PredictorService.cs
+++ b/backend/api/api/Services/PredictorService.cs
@@ -14,6 +14,11 @@ namespace api.Services
_predictor = database.GetCollection<Predictor>(settings.PredictorCollectionName);
}
+ public List<Predictor> SearchPredictors(string name, string username)
+ {
+ return _predictor.Find(predictor => predictor.name == name && predictor.isPublic == true).ToList();
+ }
+
public Predictor Create(Predictor predictor)
{
_predictor.InsertOne(predictor);
@@ -36,12 +41,15 @@ namespace api.Services
}
//last private models
- public List<Predictor> GetLatestPredictors(string username)
+ public List<Predictor> SortPredictors(string username, bool ascdsc, int latest)
{
List<Predictor> list = _predictor.Find(predictor => predictor.username == username).ToList();
- list = list.OrderByDescending(predictor => predictor.dateCreated).ToList();
+ if (ascdsc)
+ list = list.OrderBy(predictor => predictor.dateCreated).ToList();
+ else
+ list = list.OrderByDescending(predictor => predictor.dateCreated).ToList();
return list;
}
@@ -55,5 +63,6 @@ namespace api.Services
_predictor.ReplaceOne(predictor => predictor.username == username && predictor.name == name, predictor);
}
+
}
}