Models change pretty slowly, so codegen is a good solution! Ent uses codegen for its query API which looks pretty nice:
https://entgo.io/docs/tutorial-todo-crudI’m considering writing a Typescript clone of Ent with codegen powered by Typescript types. I like codegen over dynamic magic because the runtime behavior is often easier to understand. In Rails, I need to traverse a lot of space in Pry’s debugger mode to figure out WTF is happening. I would much rather have codegen.