public async Task <string> GetOrCreateShortCodeAsync(string longUrl) { var shortCode = await _repository.GetShortCodeAsync(longUrl); if (shortCode == null) { do { shortCode = ShortIdGenerator.CreateId(); }while ((await _repository.GetLongUrlAsync(shortCode)) != null); await _repository.SetShortCodeAsync(longUrl, shortCode); } return(shortCode); }