Подтвердить что ты не робот

Имеет ли Haskell библиотеку запросов SQL, такую ​​как ActiveRecord или Sequel?

С Ruby ActiveRecord или Sequel вы можете постепенно создавать SQL-запросы, добавляя where или join или order предложения к запросу в зависимости от условий во время выполнения.

Вот простой пример, взятый из ASCIIcasts:

def index  
  @articles = Article.order('name')  

  if params[:hidden]  
    @articles = @articles.where(:hidden =>(params[:hidden] == "1"))  
  end  

  respond_to do |format|  
    format.html # index.html.erb  
    format.xml  { render :xml => @articles }  
  end  
end

В примере показано, как предложение WHERE может быть добавлено к базовому SQL-запросу в таблице articles, если параметр запроса HTTP-запроса с именем hidden равен 1.

Я смотрел HDBC и postgresql-простой в Haskell. Кажется, что postgresql-simple преднамеренно затрудняет сбор SQL-запросов из динамически конкатенированных частей, чтобы предотвратить SQL-инъекцию. HDBC кажется достаточно гибким, чтобы создавать разные структурированные SQL-запросы на основе условий во время выполнения, но, похоже, не обеспечивает уровень абстракции, который предоставляет либо ActiveRecord, либо Sequel.

Может ли кто-нибудь предложить хороший способ эмуляции динамических объектов для создания запросов ActiveRecord с использованием одной из библиотек баз данных Haskell?

Если HDBC - это путь, я в порядке. Но иллюстрация будет оценена.

Я предполагаю, что я ищу, это способность динамически составлять запросы против бэкэнда PostgreSQL.

4b9b3361

Ответ 1

Вам может понадобиться Persistent, вам может понадобиться HaskellDB, вам может понадобиться что-то вроде Esqueleto.

Здесь хорошее обсуждение компромиссов каждого из них: http://blog.felipe.lessa.nom.br/?p=68