public async Task <ActionResult> CreateSlugCollection(IEnumerable <SlugForCreationDto> slugsToAdd) { _logger.LogInformation($"bulk add new slugs"); if (slugsToAdd == null || slugsToAdd.Count() == 0) { return(BadRequest()); } List <SlugEntity> slugsToReturn = new List <SlugEntity>(); int slugLength = _configuration.GetValue <short>("SlugLength", 5); foreach (var slug in slugsToAdd) { if (string.IsNullOrWhiteSpace(slug.Slug)) { slug.Slug = NanoidService.Create(slugLength); } SlugEntity newSlug = new SlugEntity { Slug = slug.Slug, Url = slug.Url }; _murlRepository.AddSlug(newSlug); slugsToReturn.Add(newSlug); } await _murlRepository.SaveChangesAsync(); string slugs = string.Join(",", slugsToAdd.Select(s => s.Slug)); return(CreatedAtRoute(nameof(GetSlugCollection), new { slugs }, slugsToAdd)); }
public void AddSlug(SlugEntity newSlug) { if (newSlug == null) { throw new ArgumentNullException(nameof(newSlug)); } _murlContext.Slugs.Add(newSlug); }
public async Task <ActionResult <SlugDto> > DeleteSlug(string slug) { SlugEntity slugToDelete = await _murlRepository.GetSlugAsync(slug); if (slugToDelete == null) { return(NotFound(slug)); } _murlRepository.DeleteSlug(slugToDelete); await _murlRepository.SaveChangesAsync(); return(Ok()); }
public async Task <ActionResult <SlugDto> > GetSlug(string slug) { _logger.LogInformation(string.Format($"getting URL values for {slug}")); // check if slug exists SlugEntity existingSlug = await _murlRepository.GetSlugAsync(slug); if (existingSlug == null) { string fullUrl = string.Format($"{Request.GetEncodedUrl()}"); return(new NotFoundObjectResult(new { message = "URL not found.", body = new { slug, url = fullUrl } })); } else { return(new OkObjectResult(existingSlug.Url)); } }
public async Task <ActionResult <SlugDto> > CreateSlug([FromBody] SlugForCreationDto slugForCreation) { _logger.LogInformation(string.Format($"creating new slug for URL: {slugForCreation.Url}")); // map to entity SlugEntity slugToAdd = new SlugEntity() { Url = slugForCreation.Url }; int slugLength = _configuration.GetValue <short>("SlugLength", 5); slugToAdd.Slug = NanoidService.Create(slugLength); _murlRepository.AddSlug(slugToAdd); await _murlRepository.SaveChangesAsync(); return(CreatedAtRoute(nameof(GetSlug), new { slug = slugToAdd.Slug }, slugToAdd)); }
public async Task <ActionResult> CreateSlugCollection(IEnumerable <SlugForCreationDto> slugsToAdd) { List <SlugEntity> slugsToReturn = new List <SlugEntity>(); foreach (var slug in slugsToAdd) { SlugEntity newSlug = new SlugEntity() { Slug = slug.Slug, Url = slug.Url }; _murlRepository.AddSlug(newSlug); slugsToReturn.Add(newSlug); } await _murlRepository.SaveChangesAsync(); string slugs = string.Join(",", slugsToAdd.Select(s => s.Slug)); return(CreatedAtRoute(nameof(GetSlugCollection), new { slugs }, slugsToAdd)); }
public void DeleteSlug(SlugEntity slug) { _murlContext.Slugs.Remove(slug); }