plandex-ai/plandex · error

error getting accepted invites for org: %v

Error message

error getting accepted invites for org: %v

What it means

ListAcceptedInvites selects invites for an org where accepted_at IS NOT NULL. Any Conn.Select failure is wrapped with this message; an empty set is a valid nil-slice result. It means the accepted-invites listing query failed against the database.

Source

Thrown at app/server/db/invite_helpers.go:79

}

func ListAllInvites(orgId string) ([]*Invite, error) {
	var invites []*Invite
	err := Conn.Select(&invites, "SELECT * FROM invites WHERE org_id = $1", orgId)

	if err != nil {
		return nil, fmt.Errorf("error getting all invites for org: %v", err)
	}

	return invites, nil
}

func ListAcceptedInvites(orgId string) ([]*Invite, error) {
	var invites []*Invite
	err := Conn.Select(&invites, "SELECT * FROM invites WHERE org_id = $1 AND accepted_at IS NOT NULL", orgId)

	if err != nil {
		return nil, fmt.Errorf("error getting accepted invites for org: %v", err)
	}

	return invites, nil
}

func GetPendingInvitesForEmail(email string) ([]*Invite, error) {
	email = strings.ToLower(email)
	var invites []*Invite
	err := Conn.Select(&invites, "SELECT * FROM invites WHERE email = $1 AND accepted_at IS NULL", email)
	if err != nil {
		if err == sql.ErrNoRows {
			return nil, nil
		}

		return nil, fmt.Errorf("error getting invites and org names for email: %v", err)
	}

	return invites, nil

View on GitHub (pinned to e2d772072e)

Solutions

  1. Apply schema migrations if the wrapped error indicates unknown columns or scan failures.
  2. Validate the orgId format in the handler before the call.
  3. Check DB connectivity and pool saturation.
  4. Use explicit column lists instead of SELECT *.

Example fix

// before
err := Conn.Select(&invites, "SELECT * FROM invites WHERE org_id = $1 AND accepted_at IS NOT NULL", orgId)

// after
err := Conn.Select(&invites, "SELECT id, org_id, email, name, inviter_id, org_role_id, accepted_at FROM invites WHERE org_id = $1 AND accepted_at IS NOT NULL", orgId)
Defensive patterns

Strategy: try-catch

Validate before calling

if _, err := uuid.Parse(orgId); err != nil {
    return fmt.Errorf("invalid org id %q", orgId)
}

Try / catch

invites, err := db.ListAcceptedInvites(orgId)
if err != nil {
    logger.Error("list accepted invites failed", "orgId", orgId, "err", err)
    http.Error(w, "internal error", http.StatusInternalServerError)
    return
}
// empty result: invites == nil is a valid empty list

Prevention

When it happens

Trigger: Conn.Select("SELECT * FROM invites WHERE org_id = $1 AND accepted_at IS NOT NULL", orgId) fails: org_id format mismatch, DB connection failure, timeout, or scan error from schema drift on invites. Called by ListAcceptedInvitesHandler.

Common situations: Same as other list endpoints: unmigrated DB after an invites table change, invalid org id from the request, or DB outage under load.

Understand the failure class

Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.

Related errors


AI-assisted analysis of plandex-ai/plandex@e2d772072e (2026-09-05). Data as JSON: /api/errors/58d42d996187f6a5. Report an issue: GitHub.