rastrillo / abono Public

Follow-ups from Patrix's move onto abono open

Found while moving Patrix onto abono v0.1.0 (Patrix 18df3cc). None blocks Patrix; each is a small addition to abono:

  1. A plan removed from the configuration stays on sale. SeedPlans only touches the plans it is given, so dropping monthly from PATRIX_STRIPE_PLANS leaves its offer and sold price active (offers.go). Decide: archive plans missing from a seed, or document that removal happens on the owner page.
  2. "Does this subject have any rows?" Patrix's OnChange must leave alone people abono has never heard of, and recompute everyone else. abono has no API for it, so Patrix reads abono_subscriptions and abono_comps directly (internal/patrix/membership). Add HasRowsIn(ctx, tx, subject).
  3. Finish's not-found. A Checkout return with an unknown session id is routine (old links, bots), but abono's error for it is internal, so Patrix logs every one at Warn. Export a sentinel (ErrNotFound wrapping) for it.
  4. A single comp by id. Patrix's end-membership pages load every member to find one comp. Add Comp(ctx, id) or similar.