public async Task AddTagsToPerformer(PerformerInfo performer, IEnumerable <string> tags) { await using var context = ContextFactory.CreateDbContext(ConnectionString); var connection = context.Database.GetDbConnection(); var command = connection.CreateCommand(); var parameters = (tags as string[] ?? tags.ToArray()).Select(t => $"\'{t}\'"); command.CommandText = $"call add_tags_to_performer({performer.Id}, {string.Join(',', parameters)})"; try { await connection.OpenAsync(); await command.ExecuteNonQueryAsync(); } catch (PostgresException ex) { switch (ex.SqlState) { case PgsqlErrors.RaiseException: throw new RepositoryException(ex.MessageText); } throw; } }
public async Task DeletePerformerTags(PerformerInfo performer, IEnumerable <string> tags) { await using var context = ContextFactory.CreateDbContext(ConnectionString); var connection = context.Database.GetDbConnection(); var command = connection.CreateCommand(); var parameters = (tags as string[] ?? tags.ToArray()).Select(t => $"\'{t}\'"); command.CommandText = $"call delete_performer_tags({performer.Id}, {string.Join(',', parameters)})"; await connection.OpenAsync(); await command.ExecuteNonQueryAsync(); }
private async Task <PerformerInfoViewModel> CreatePerformerInfoViewModelAsync(PerformerInfo performer) { var model = _mapper.Map <PerformerInfoViewModel>(performer); model.Tags = (await _performerRepository.GetPerformerTags(model.Id)).Select(t => t.Name); return(model); }