updateCheckedIn(attendeeId: number,listingId: number,checkedIn: boolean,): Promise<void>
Set a line's check-in flag, refusing a no-quantity (quantity 0) line — it
isn't a real ticket, mirroring the refunded-ticket guard in checkin.ts. The
quantity > 0 predicate scopes the write so a ghost row is a no-op (it can
never have been checked in, so scoping the check-OUT case too is harmless).