Dataloader vs plain ecto

If I use subqueuries, joins, and other mechanisms effectively, are there still times where dataloader would be necessary in a project with a single postgres repo? That is, is dataloader meant for people who don’t want to dig into advanced queries?

IMHO - No. Data loader can you help to reduce amount of written code in few places, but in many cases it may not be needed for your service. Dataloader helps greatly with GraphQL APIs as you may have arbitrary sub queries and building such by hand can be problematic. In case of “regular REST” or simple CRUD it do not bring much to the table.

No, Dataloader is not meant to replace Ecto, and generally isn’t particularly ergonomic to use outside of GraphQL.

I think the design philosophy of data loader has value outside of GraphQL because I think the combination if flexible querying with contexts remains problematic, but the specifics of how Dataloader works and how it’s API is set up makes it very impractical outside of Absinthe.