diff options
| author | Ivan Ljubisavljevic <ivan996sk@gmail.com> | 2022-03-21 00:10:41 +0100 | 
|---|---|---|
| committer | Ivan Ljubisavljevic <ivan996sk@gmail.com> | 2022-03-21 00:10:41 +0100 | 
| commit | 255d683fb4f2e3d341fe41537691b0924aa80f46 (patch) | |
| tree | 16d2054fa84394f59f7d902907f8e95bcf2cb17f /backend | |
| parent | 470442d5b7c8f034f13ed0e8d2aaafe826b40a8c (diff) | |
Odradjena pretraga prediktora i datasetova #43 Ispravljen update Datasetova #41
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);          } +      }  } | 
