2012-10-22 7 views
13

रूबी के ActiveRecord या Sequel के साथ, आप प्रगतिशील रूप से एसक्यूएल प्रश्नों का निर्माण कर सकते हैं, where या join या order रन टाइम पर स्थितियों के आधार पर एक क्वेरी के खंड जोड़ सकते हैं।क्या हैस्केल में एक SQL क्वेरी-कंपोज़िंग लाइब्रेरी है जैसे ActiveRecord या Sequel?

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 

उदाहरण दिखाता है कि एक कहां खंड articles मेज पर अंतर्निहित SQL क्वेरी करने के लिए संलग्न किया जा सकता है, तो एक HTTP अनुरोध क्वेरी पैरामीटर hidden नामित 1 बराबर है:

यहाँ एक सरल उदाहरण, ASCIIcasts से लिया है ।

मैं हास्केल में एचडीबीसी और पोस्टग्रेस्क्ल-सरल देख रहा हूं। ऐसा लगता है कि पोस्टग्रेस्क्ल-सरल जानबूझकर एसक्यूएल इंजेक्शन को रोकने के लिए गतिशील रूप से संयोजित भागों से एसक्यूएल प्रश्नों को बनाना मुश्किल बनाता है। एचडीबीसी रनटाइम की स्थितियों के आधार पर अलग-अलग संरचित एसक्यूएल प्रश्नों को बनाने के लिए काफी लचीला प्रतीत होता है, लेकिन ऐसा लगता है कि यह ActiveRecord या Sequel प्रदान करने वाले अमूर्तता का स्तर प्रदान नहीं करता है।

क्या कोई भी हास्केल डेटाबेस पुस्तकालयों में से किसी एक का उपयोग कर ActiveRecord की गतिशील क्वेरी-बिल्डिंग सुविधाओं का अनुकरण करने का एक अच्छा तरीका सुझा सकता है?

यदि एचडीबीसी जाने का रास्ता है, तो मैं इसके साथ ठीक हूं। लेकिन एक उदाहरण की सराहना की जाएगी।

मुझे लगता है कि मैं पोस्टग्रेएसक्यूएल बैकएंड के खिलाफ क्वेरी को गतिशील रूप से लिखने की क्षमता के लिए क्या देख रहा हूं।

+0

ऐसा लगता है के बजाय आपके जैसे haskelldb चाहते हैं। क्षमा करें, मैं इससे परिचित नहीं हूं। हालांकि, इसमें PostgreSQL बैक-एंड है। –

+0

इससे मदद मिल सकती है: [तालिका के रिकॉर्ड अनमैप करने के लिए HaskellDB का उपयोग करने का मूल उदाहरण] (http://stackoverflow.com/q/7697620/196844) –

उत्तर

संबंधित मुद्दे