Files
minstrel/internal/db/migrations/0052_session_ips.up.sql
T
bvandeusenandClaude Opus 5.5 6028d78844
release / govulncheck (push) Successful in 17s
release / web (push) Successful in 1m33s
release / go (push) Successful in 1m49s
release / integration (push) Successful in 5m42s
release / android (push) Successful in 5m59s
release / Build signed APK (releases and dev) (push) Successful in 6m9s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 16s
release / Verify release artifacts (tag releases only) (push) Skipped
docs: migration headers keep the before and after, without ids, quotes or one library's numbers (#6277)
Applies rule 32's migration exception: each header still says what the
schema was, what changes and what it prevents, but task, milestone,
decision and rule ids are replaced by the practice they stood for, the
operator quotes by the decision, single-install counts are dropped, and
pointers to a deleted package and an external design doc are gone.
golang-migrate keeps no checksum, so editing applied migrations'
comments is safe.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 12:34:39 -04:00

20 lines
982 B
SQL

-- Session provenance for the active-sessions surface.
--
-- TWO addresses, not one, and the pair is the point: a session created at
-- home and now being used from somewhere else is the shape of a stolen
-- token. A single "current IP" column can't express that, and a single
-- "origin IP" column goes stale the moment the token moves.
--
-- text rather than inet, matching user_agent directly above: these are
-- stored to be displayed, never queried by subnet, and inet round-trips
-- through pgx/sqlc as a netip.Prefix that renders as "1.2.3.4/32" and would
-- need unwrapping at every display site.
--
-- DEFAULT '' rather than NULL so existing rows — and any future insert that
-- genuinely can't determine an address — stay renderable without a null
-- check at every call site. The UI reads empty as "unknown" rather than
-- inventing a value.
ALTER TABLE sessions
ADD COLUMN created_ip text NOT NULL DEFAULT '',
ADD COLUMN last_ip text NOT NULL DEFAULT '';