Repository navigation
Reframe the roadmap around the DDD pivot - #9
Merged
Merged
Conversation
Records what actually works — connect, authenticate, run any statement returning no rows — with the shape of the calls rather than a claim, and that SELECT is still refused rather than guessed at. Ticks phase 2 up to the point reached and names what is left in it, with why a modern server at default settings cannot be reached until caching_sha2_password lands. Keeps the auth-switch finding, since it is the one correction a real server made to a design the fake had happily confirmed. Also states plainly that CI does not prove the login: the workflow has no MySQL service, so a green check means the parsers agree with the spec and the fixtures, nothing more.
Adds a "pivot" section separating what the restructure genuinely buys from what is renaming, and what is deliberately not adopted — no repositories, no domain events, no service layers over one-liners — with the reason in each case. Reorders the phases. The text resultset stays first, because every layer above it needs something to read and because it is the largest body of logic left. Then the restructure, then the query layer, then prepared statements, which is where a query compiled to placeholders becomes executable rather than only inspectable. Records the open question the query layer turns on: placeholders or interpolated literals. Placeholders need prepared statements and are the only version that is not an injection hole, so the intent is placeholders, landing before anything can run them. Drops the Ecto adapter as a destination, since the pivot builds that layer directly. Still possible, no longer the aim. Also states the current CRUD position plainly: three letters of four, with no parameter binding and no escaping helper, which is what the query layer plus prepared statements exist to close.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two commits, roadmap only. The first brings it up to date with phases 2 and 3 — it was committed onto the #8 branch but did not reach
master, since #8 merged while it was being amended. The second reframes it around the pivot.Nothing in
lib/changes. This is the plan for review before any of it is built.What the pivot section says
It separates three things rather than presenting the restructure as uniformly valuable:
Genuinely new
querycontext — a composable query value plus a compiler to SQL. The substance of the pivot.ssl.exbehind the transport behaviour, which also unblockscaching_sha2_password's full authentication path.Mostly renaming
protocol/→wire/,client.ex→connection/connection.ex. Worth doing while the code is small; it buys vocabulary, not correctness.Deliberately not adopted
Reordered phases
The resultset stays first for a practical reason: every layer above it needs something to read, and a query language on a driver that cannot
SELECTcannot be validated end to end.The question to settle
Does the compiler emit SQL with interpolated literals, or SQL with placeholders plus a parameter list? Placeholders need prepared statements to execute, so the query layer would land as compile-and-inspect before it becomes compile-and-execute. It is also the only version that is not an injection hole. Stated intent is placeholders — worth your explicit agreement, since it sets the order of C and D.
Dropped
The
Ecto.Adapters.SQLadapter, as a destination. The pivot builds that layer directly. Still possible — the driver would satisfy one — but no longer what this aims at.Also recorded
The current CRUD position, plainly: three letters of four, no parameter binding and no escaping helper, so values must be interpolated by hand. And that CI does not prove the login, since the workflow has no MySQL service.