Skip to content

Apply committed migrations on boot instead of db push --accept-data-loss #192

Closed

Description

@Miracle656

Background

src/index.ts:18 runs execSync("npx prisma db push --accept-data-loss") on every startup, while prisma/migrations/ holds seven committed migrations that are never applied. db push diffs the schema and drops whatever does not match; --accept-data-loss makes that non-interactive. Commit 1acb9dd ("let db push add the network primary key to populated tables") is the scar tissue from exactly this.

tests/integration/migrations.test.ts already tests migration idempotency, so the migrations are verified and simply unused.

Acceptance criteria

  • Startup runs prisma migrate deploy; db push survives only behind an explicit dev/test flag
  • A migration failure is fatal with a clear message — a half-migrated database serving traffic is worse than a crash
  • docs/ documents the drift-recovery path for a database that was previously db pushed
  • A fresh database reaches the current schema via migrate deploy alone
  • --accept-data-loss appears on no production path

Drips Wave · Complexity: Intermediate · 150 points


How this repo is laid out

Wraith is a Soroban incoming-transfer indexer: it fills the gap Horizon leaves for SAC/SEP-41 token events by recipient address. Roughly 14k lines under src/, REST + GraphQL + WebSocket, Postgres via Prisma, deployed on Render.

  • Unit tests are jest (src/**/__tests__, tests/*.test.ts), with a coverage gate.
  • Integration tests are vitest (tests/integration/, vitest.integration.config.ts, Docker).
  • Don't mix the two runners in one file.

Known state of main before you start

tsc --noEmit and the unit suite are green. The Integration tests CI job is red, and so is Load test — both predate this batch. Open PRs #177 and #178 address them. If the integration job is red when you open a PR, that is not your fault; say so in the PR and carry on.

Four modules are shipped, closed as done, and imported by nothing: src/indexer/checkpoint.ts, src/ingest/reorg.ts, src/middleware/opa.ts, and src/api/candles.ts + src/workers/ohlc-refresh.ts. So the live indexer today has no reorg handling and no atomic checkpointing, despite both features being closed. Two issues below start unpicking that — don't assume a closed issue means a wired feature.

Ground rules

  • Every PR needs a test that fails before the change and passes after, unless the issue says otherwise.
  • Don't widen a Prometheus label to something unbounded — addresses and contract ids must never become label values.
  • Nothing may log or return a raw database error, a connection string, or a provider URL.
  • Don't reformat a file you're changing. A diff that is 90% whitespace hides the 10% that matters.


Required: Before submitting, join the contributor Telegram so your work can be tracked and counted toward the Stellar Wave: https://t.me/+fxHXq8f1SwlkZDBk

Activity

  1. N-otorious commented on Sep 24, 2026

    @N-otorious
    Contributor

    @N-otorious has applied to work on this issue as part of the Stellar Wave Program's 9th wave.

    Would like to work on this issue, assign it to me please.

    ℹ️ Repo Maintainers: To accept this application, review their application or assign @N-otorious to this issue.

  2. Frun1na commented on Sep 24, 2026

    @Frun1na
    Contributor

    @Frun1na has applied to work on this issue as part of the Stellar Wave Program's 9th wave.

    Hello maintainer I would like to work on this issue

    ℹ️ Repo Maintainers: To accept this application, review their application or assign @Frun1na to this issue.

  3. funds0033-cmyk commented on Sep 26, 2026

    @funds0033-cmyk
    Contributor

    @funds0033-cmyk has applied to work on this issue as part of the Stellar Wave Program's 9th wave.

    Dear maintainer pls assign me to this

    ℹ️ Repo Maintainers: To accept this application, review their application or assign @funds0033-cmyk to this issue.

  4. drips-wave commented on Sep 26, 2026

    @drips-wave

    Congratulations, @funds0033-cmyk! 🎉 Your application was accepted by the repo's maintainers, and the issue is due on September 30, 2026.

    🧑‍💻 @funds0033-cmyk: Please resolve the issue such that the repo's maintainers have enough time to review your contribution before the due date. You'll earn Points for completing the issue on-time, which will make you eligible for a share of the Stellar Wave Program's reward pool.

    Warning

    When opening a PR, please link it to this issue to ensure it gets tracked accurately. Points are awarded when this issue is marked as completed by the maintainer.

    🤠 Repo maintainers: Please keep an eye on the contributor's progress and review their work before the due date. You can manage this issue, including adjusting its complexity and points, here.

    🌊 Happy Wave 🌊

  5. drips-wave commented on Oct 12, 2026

    @drips-wave

    This issue has been marked as completed by a Drips Wave moderator for @funds0033-cmyk as part of the Stellar Wave Program's 9th Wave 🥳

    Moderator's reason: [Auto-assessed] The PR was merged by maintainer @Miracle656 with an explicit approval review ("This is the right response to #201, and the doc is better for the split.") and successfully closes the issue by providing the required documentation on database schema management and drift recovery.

    😎 @funds0033-cmyk: You earned 150 Points for completing this issue! Once the Wave's rewards are finalized, you'll be eligible for a percentage of the Wave's reward pool based on the percentage of total points you've earned. Learn more here.

    🧑‍💻 Repo maintainers: How'd the contributor do? Leave a review to share your experience working with them.

    ℹ️ Note: This issue was marked complete via moderation. Points were issued even though the GitHub issue remains open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions