The persistent half of io.eezo.core.Store: a model's rows in Postgres, read and written through its Table[A].
It is what a model deriving Table gets in the generated route table, where the in-memory half in http is what every other model gets. Neither module sees the other; core's trait is the only thing both name.
A plain factory rather than a given. Implicit search for io.eezo.core.Store[Post] looks in object Store in core and in object Post, and a given in this package sits in neither, so it would need an import at every call site to be found at all. The generated table names this object outright instead.
The Table[A] it needs resolves without help wherever it is called, because derives Table puts the instance in the model's own companion.
A store over the installed Database. Holds no connection of its own: every operation opens its own scope, so one of these is as good in a handler as in a test.
A store over the installed Database. Holds no connection of its own: every operation opens its own scope, so one of these is as good in a handler as in a test.
The same rows, narrowable to the owner one column records.
The same rows, narrowable to the owner one column records.
The column is resolved once, here, and not on every call: by is called on every covered request, and a lookup through the column list per request would be this table's shape read thousands of times to answer a question that cannot change. Resolving it here is also what makes a wrong owner field a failure at boot rather than a wrong query in production, which is the precedent TableDef.idColumn set: the route table is built while the application starts, so an application whose declaration names a field its table has no column for does not serve.
The name is read through snake because that is the one rule the Table macro names columns by, and an OwnerOf carries the model's own field label. A model whose owner is createdBy would otherwise be looked up under a name no table ever has.
Column[V] and not a cast: the owner is bound into four statements through the same put any other value of its type goes through, so a value that spells a quotation mark is a value and never a fragment of SQL.