public async Task <Result> Delete(T entity)
        {
            context.Remove(entity);

            var affectedRows = await SaveChangesAsync();

            return(affectedRows > 0 ? Result.Ok() : CommonResults.EntityNotFoundToRemove <T>(entity.Id));
        }
        public async Task <Result> Delete(int id)
        {
            // TODO: Avoid getting from database or add constraint new()
            var entity = await GetByIdOrNull(id);

            if (entity == null)
            {
                return(CommonResults.EntityNotFoundToRemove <T>(id));
            }

            return(await Delete(entity));
        }
        public async Task <Result> Delete(int entityId)
        {
            if (data.TryRemove(entityId, out T entity))
            {
                logger.LogTrace($"#{entityId} removed");

                return(Result.Ok());
            }

            logger.LogTrace($"#{entityId} not found");

            return(CommonResults.EntityNotFoundToRemove <T>(entityId));
        }