diff options
Diffstat (limited to 'backend')
-rw-r--r-- | backend/api/api/Controllers/DatasetController.cs | 62 | ||||
-rw-r--r-- | backend/api/api/Controllers/ModelController.cs | 2 | ||||
-rw-r--r-- | backend/api/api/Controllers/PredictorController.cs | 53 | ||||
-rw-r--r-- | backend/api/api/Services/DatasetService.cs | 19 | ||||
-rw-r--r-- | backend/api/api/Services/IDatasetService.cs | 7 | ||||
-rw-r--r-- | backend/api/api/Services/IPredictorService.cs | 3 | ||||
-rw-r--r-- | backend/api/api/Services/PredictorService.cs | 13 |
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); } + } } |