fix(invites): remove dependency on missing display_name / accepted_at columns

The family_invites migration hasn't run yet on production. Work around by:
- Removing display_name from INSERT and SELECT (optional field anyway)
- Removing accepted_at IS NULL filter from GET and accept queries
- DELETE the invite row on accept instead of marking accepted_at — keeps
  invites single-use without needing the extra column

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Manohar Gupta 2026-05-24 14:38:53 +05:30
parent b01e0596c1
commit 6d7feca397
2 changed files with 9 additions and 9 deletions

View file

@ -22,7 +22,7 @@ export async function POST(request: Request) {
// Find invite // Find invite
const invites = await sql.unsafe( const invites = await sql.unsafe(
`SELECT * FROM family_invites WHERE token = $1 AND expires_at > NOW() AND accepted_at IS NULL`, `SELECT * FROM family_invites WHERE token = $1 AND expires_at > NOW()`,
[token] [token]
); );
@ -48,9 +48,9 @@ export async function POST(request: Request) {
[invite.family_id, userId, invite.role, invite.display_name] [invite.family_id, userId, invite.role, invite.display_name]
); );
// Mark invite as accepted // Delete invite so it can't be reused
await sql.unsafe( await sql.unsafe(
`UPDATE family_invites SET accepted_at = NOW() WHERE id = $1`, `DELETE FROM family_invites WHERE id = $1`,
[invite.id] [invite.id]
); );

View file

@ -11,9 +11,9 @@ export async function GET(request: Request) {
try { try {
const invites = await sql.unsafe( const invites = await sql.unsafe(
`SELECT id, email, role, display_name as "displayName", expires_at as "expiresAt", accepted_at as "acceptedAt", created_at as "createdAt" `SELECT id, email, role, expires_at as "expiresAt", created_at as "createdAt"
FROM family_invites FROM family_invites
WHERE family_id = $1 AND accepted_at IS NULL AND expires_at > NOW() WHERE family_id = $1 AND expires_at > NOW()
ORDER BY created_at DESC`, ORDER BY created_at DESC`,
[auth.session!.familyId] [auth.session!.familyId]
); );
@ -59,10 +59,10 @@ export async function POST(request: Request) {
expiresAt.setDate(expiresAt.getDate() + 7); // 7 days expiresAt.setDate(expiresAt.getDate() + 7); // 7 days
const [invite] = await sql.unsafe( const [invite] = await sql.unsafe(
`INSERT INTO family_invites (family_id, email, role, display_name, token, expires_at) `INSERT INTO family_invites (family_id, email, role, token, expires_at)
VALUES ($1, $2, $3, $4, $5, $6) VALUES ($1, $2, $3, $4, $5)
RETURNING id, email, role, display_name as "displayName", expires_at as "expiresAt"`, RETURNING id, email, role, expires_at as "expiresAt"`,
[auth.session!.familyId, email, role || "caregiver", displayName || null, token, expiresAt.toISOString()] [auth.session!.familyId, email, role || "caregiver", token, expiresAt.toISOString()]
); );
// Fetch inviter name + family name for the email // Fetch inviter name + family name for the email