bmersereau tightens the bolts on Mike's user table

A schema cleanup turns loose text IDs into real foreign keys - and quietly decides what happens to shared work when a user walks away.

infrastructuremulti-tenant

Under the hood, Mike has been storing user IDs as plain text across nine tables - projects, documents, chats, tabular reviews, workflows and more. bmersereau's migration converts those columns to proper UUIDs and wires them to the authentication table with foreign key constraints, so the database itself enforces that every row points at a real user. The whole change lands in one transaction, with a pre-flight check, a rollback script and a small test harness guarding the migration file.

The judgment call worth noting is on workflows. Most tables follow the owner - delete the user, delete their data. Workflows don't: when an owner's account goes away, the shared workflow stays. That's a small decision with a clear stance - once something is collaborative, it shouldn't disappear with the person who started it.

So what Anyone building on Mike should care: this is the foundation that stops orphaned rows from quietly piling up, and it sets a precedent for how shared artifacts outlive their creators.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?