From 015ae7ec836d3b94795e5447d1179e3400d10c1f Mon Sep 17 00:00:00 2001 From: Ivan Ljubisavljevic Date: Sun, 20 Mar 2022 15:09:22 +0100 Subject: Odradjen GetLatestDataset, GetLatestModel i GetLatestPredictor. Ispravljeno rutiranje --- backend/api/api/Controllers/DatasetController.cs | 38 ++-------------- backend/api/api/Controllers/ModelController.cs | 50 ++++++++++++++++++--- backend/api/api/Controllers/PredictorController.cs | 51 +++++++++++++++++++--- backend/api/api/Models/Dataset.cs | 4 +- backend/api/api/Models/Model.cs | 6 +-- backend/api/api/Models/Predictor.cs | 2 +- backend/api/api/Services/DatasetService.cs | 7 ++- backend/api/api/Services/IDatasetService.cs | 2 +- backend/api/api/Services/IPredictorService.cs | 1 + backend/api/api/Services/PredictorService.cs | 9 ++++ 10 files changed, 111 insertions(+), 59 deletions(-) (limited to 'backend') diff --git a/backend/api/api/Controllers/DatasetController.cs b/backend/api/api/Controllers/DatasetController.cs index 1ad180b7..7d754a9b 100644 --- a/backend/api/api/Controllers/DatasetController.cs +++ b/backend/api/api/Controllers/DatasetController.cs @@ -40,7 +40,7 @@ namespace api.Controllers } else return BadRequest(); - + //ako bude trebao ID, samo iz baze uzeti return _datasetService.GetMyDatesets(username); @@ -66,43 +66,11 @@ namespace api.Controllers //ako bude trebao ID, samo iz baze uzeti - List lista = _datasetService.GetMyDatesets(username); - - List novaLista = new List(); - - lista.Reverse(); - - for(int i = 0; i < latest; i++) - novaLista.Add(lista[i]); - - return novaLista; - } - - // GET: api//getoldestdataset/{number} - [HttpGet("getoldestdatasets/{oldest}")] - [Authorize(Roles = "User")] - public ActionResult> GetOldestDatasets(int oldest) - { - 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 - - List lista = _datasetService.GetMyDatesets(username); + List lista = _datasetService.GetLatestDatasets(username, latest); List novaLista = new List(); - for (int i = 0; i < oldest; i++) + for (int i = 0; i < latest; i++) novaLista.Add(lista[i]); return novaLista; diff --git a/backend/api/api/Controllers/ModelController.cs b/backend/api/api/Controllers/ModelController.cs index a4fa99c4..85fef848 100644 --- a/backend/api/api/Controllers/ModelController.cs +++ b/backend/api/api/Controllers/ModelController.cs @@ -34,7 +34,7 @@ namespace api.Controllers } // GET: api//mymodels - [HttpGet("/mymodels")] + [HttpGet("mymodels")] [Authorize(Roles = "User")] public ActionResult> Get() { @@ -54,9 +54,9 @@ namespace api.Controllers return _modelService.GetMyModels(username); } - // name modela + // vraca svoj model prema nekom imenu // GET api//{name} - [HttpGet("/{name}")] + [HttpGet("{name}")] [Authorize(Roles = "User")] public ActionResult Get(string name) { @@ -81,6 +81,45 @@ namespace api.Controllers return model; } + //odraditi da vraca modele prema nekom imenu + + + + // moze da vraca sve modele pa da se ovde odradi orderByDesc + //odraditi to i u Datasetove i Predictore + // GET: api//getlatestmodels/{number} + [HttpGet("getlatestmodels/{latest}")] + [Authorize(Roles = "User")] + public ActionResult> GetLatestModels(int latest) + { + 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 + + List lista = _modelService.GetLatestModels(username); + + List novaLista = new List(); + + for (int i = 0; i < latest; i++) + novaLista.Add(lista[i]); + + return novaLista; + } + + + + // POST api//add [HttpPost("add")] [Authorize(Roles = "User")] @@ -88,6 +127,7 @@ namespace api.Controllers { if (_modelService.CheckHyperparameters(model.inputNeurons, model.hiddenLayerNeurons, model.hiddenLayers, model.outputNeurons) == false) return BadRequest("Bad parameters!"); + var existingModel = _modelService.GetOneModel(model.username, model.name); if (existingModel != null) @@ -100,7 +140,7 @@ namespace api.Controllers } } - // PUT api//{username}/{name} + // PUT api//{name} [HttpPut("{name}")] [Authorize(Roles = "User")] public ActionResult Put(string name, [FromBody] Model model) @@ -128,7 +168,7 @@ namespace api.Controllers return NoContent(); } - // DELETE api//username + // DELETE api//name [HttpDelete("{name}")] [Authorize(Roles = "User")] public ActionResult Delete(string name) diff --git a/backend/api/api/Controllers/PredictorController.cs b/backend/api/api/Controllers/PredictorController.cs index d5a55b3c..66a13aff 100644 --- a/backend/api/api/Controllers/PredictorController.cs +++ b/backend/api/api/Controllers/PredictorController.cs @@ -49,7 +49,7 @@ namespace api.Controllers } // GET api//{name} - [HttpGet("/{name}")] + [HttpGet("{name}")] [Authorize(Roles = "User")] public ActionResult Get(string name) { @@ -73,15 +73,45 @@ namespace api.Controllers return predictor; } + // moze da vraca sve modele pa da se ovde odradi orderByDesc + //odraditi to i u Datasetove i Predictore + // GET: api//getlatestpredictors/{number} + [HttpGet("getlatestpredictors/{latest}")] + [Authorize(Roles = "User")] + public ActionResult> GetLatestPredictors(int latest) + { + 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 + List lista = _predictorService.GetLatestPredictors(username); + + List novaLista = new List(); + + for (int i = 0; i < latest; i++) + novaLista.Add(lista[i]); + + return novaLista; + } // POST api//add [HttpPost("add")] [Authorize(Roles = "User")] public ActionResult Post([FromBody] Predictor predictor) { - var existingModel = _predictorService.GetOnePredictor(predictor.username, predictor.name); + var existingPredictor = _predictorService.GetOnePredictor(predictor.username, predictor.name); - if (existingModel != null) + if (existingPredictor != null) return NotFound($"Predictor with name = {predictor.name} exisits"); else { @@ -94,7 +124,7 @@ namespace api.Controllers // PUT api//{name} - [HttpPut("/{name}")] + [HttpPut("{name}")] [Authorize(Roles = "User")] public ActionResult Put(string name, [FromBody] Predictor predictor) { @@ -111,10 +141,10 @@ namespace api.Controllers else return BadRequest(); - var existingDataset = _predictorService.GetOnePredictor(username, name); + var existingPredictor = _predictorService.GetOnePredictor(username, name); //ne mora da se proverava - if (existingDataset == null) + if (existingPredictor == null) return NotFound($"Predictor with name = {name} or user with username = {username} not found"); _predictorService.Update(username, name, predictor); @@ -122,9 +152,16 @@ namespace api.Controllers return Ok($"Predictor with name = {name} updated"); } + // odraditi pretragu predictora + //potrebna public i private pretraga + //prvo da napakuje svoje pa onda ostale + // + //isto odraditi i za datasetove + // + // DELETE api//name - [HttpDelete("/{name}")] + [HttpDelete("{name}")] [Authorize(Roles = "User")] public ActionResult Delete(string name) { diff --git a/backend/api/api/Models/Dataset.cs b/backend/api/api/Models/Dataset.cs index d4649c17..1bf080ec 100644 --- a/backend/api/api/Models/Dataset.cs +++ b/backend/api/api/Models/Dataset.cs @@ -18,8 +18,8 @@ namespace api.Models public string extension { get; set; } public bool isPublic { get; set; } public bool accessibleByLink { get; set; } - public string dateCreated { get; set; } - public string lastUpdated { get; set; } + public DateTime dateCreated { get; set; } + public DateTime lastUpdated { get; set; } } } diff --git a/backend/api/api/Models/Model.cs b/backend/api/api/Models/Model.cs index 52516cd9..7c884ae9 100644 --- a/backend/api/api/Models/Model.cs +++ b/backend/api/api/Models/Model.cs @@ -15,8 +15,8 @@ namespace api.Models public string name { get; set; } public string description { get; set; } //datetime - public string dateCreated { get; set; } - public string lastUpdated { get; set; } + public DateTime dateCreated { get; set; } + public DateTime lastUpdated { get; set; } //proveriti id public string datasetId { get; set; } @@ -36,8 +36,6 @@ namespace api.Models public int hiddenLayerNeurons { get; set; } public int hiddenLayers { get; set; } public int batchSize { get; set; } - // na izlazu je moguce da bude vise neurona (klasifikacioni problem sa vise od 2 klase) - public int outputNeurons { get; set; } public string inputLayerActivationFunction { get; set; } public string hiddenLayerActivationFunction { get; set; } public string outputLayerActivationFunction { get; set; } diff --git a/backend/api/api/Models/Predictor.cs b/backend/api/api/Models/Predictor.cs index cd2f4557..568719fc 100644 --- a/backend/api/api/Models/Predictor.cs +++ b/backend/api/api/Models/Predictor.cs @@ -16,7 +16,7 @@ namespace api.Models public string output { get; set; } public bool isPublic { get; set; } public bool accessibleByLink { get; set; } - public string dateCreated { get; set; } + public DateTime dateCreated { get; set; } } } diff --git a/backend/api/api/Services/DatasetService.cs b/backend/api/api/Services/DatasetService.cs index 880570dd..27da2162 100644 --- a/backend/api/api/Services/DatasetService.cs +++ b/backend/api/api/Services/DatasetService.cs @@ -1,5 +1,4 @@ -using System.Linq; -using api.Interfaces; +using api.Interfaces; using api.Models; using MongoDB.Driver; @@ -32,12 +31,12 @@ namespace api.Services return _dataset.Find(dataset => dataset.username == username).ToList(); } + //poslednji datasetovi public List GetLatestDatasets(string username, int latest) { List list = _dataset.Find(dataset => dataset.username == username).ToList(); - - + list = list.OrderByDescending(dataset => dataset.lastUpdated).ToList(); return list; } diff --git a/backend/api/api/Services/IDatasetService.cs b/backend/api/api/Services/IDatasetService.cs index 19a0aabc..40816b4c 100644 --- a/backend/api/api/Services/IDatasetService.cs +++ b/backend/api/api/Services/IDatasetService.cs @@ -6,7 +6,7 @@ namespace api.Services public interface IDatasetService { Dataset GetOneDataset(string username, string name); - List GetMyDatesets(string username); + List GetMyDatesets(string username); List GetLatestDatasets(string username, int latest); List GetPublicDatesets(); Dataset Create(Dataset dataset); diff --git a/backend/api/api/Services/IPredictorService.cs b/backend/api/api/Services/IPredictorService.cs index 594b233b..e34ced7f 100644 --- a/backend/api/api/Services/IPredictorService.cs +++ b/backend/api/api/Services/IPredictorService.cs @@ -7,6 +7,7 @@ namespace api.Services { Predictor GetOnePredictor(string username, string name); List GetMyPredictors(string username); + List GetLatestPredictors(string username); List 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 69fb25c9..d1190440 100644 --- a/backend/api/api/Services/PredictorService.cs +++ b/backend/api/api/Services/PredictorService.cs @@ -35,6 +35,15 @@ namespace api.Services return _predictor.Find(predictor => predictor.username == username && predictor.name == name).FirstOrDefault(); } + //last private models + public List GetLatestPredictors(string username) + { + List list = _predictor.Find(predictor => predictor.username == username).ToList(); + + list = list.OrderByDescending(predictor => predictor.dateCreated).ToList(); + + return list; + } public List GetPublicPredictors() { -- cgit v1.2.3