Isn't this what an ORM does? You write "User.findOne(user => user.name == "Glauber Costa" && user.age >= 40);" and it will be translated into SQL. Maybe I'm missing something here, but I don't see the innovation.
Users.find(x => x.name == "Bob").
My programming language has done that for me. What's the next phase? What data structures do I need to maintain to construct these DSLs? How do I optimize them?
I can fight my way through this but I wish I just had the theory and making this kind of stuff easier. It just comes up so often in the problems that I solve and I'd like to reach for this tool more often.
Looking at the code for these technologies it's incredible how complex it is to implement the nice DSL that they expose. How much of that is accidental complexity?