Skip to content

[Tech Debt] Remove entire credits system — credits will not be used #277

@sonikro

Description

@sonikro

Decision

The credits system will not be used in TF2-QuickServer. All credit-related code across core, providers, and entrypoints is dead weight. This issue tracks complete removal.

Note: This subsumes parts of #267 (BuyCredits command) and #276 (PayPal/Adyen payment integrations) — those can be resolved as part of this effort or handled together.


Full Scope of Removal

Core layer (packages/core/)

Domain models (delete files):

  • src/domain/CreditOrder.ts
  • src/domain/CreditOrderRequest.ts
  • src/domain/CreditsConfig.ts
  • Remove CreditsConfig export from src/domain/index.ts

Repositories (delete files):

  • src/repository/CreditOrdersRepository.ts
  • src/repository/UserCreditsRepository.ts

Services (delete file):

  • src/services/PaymentService.ts

Use cases (delete files + tests):

  • src/usecase/ConsumeCreditsFromRunningServers.ts + .test.ts
  • src/usecase/CreateCreditsPurchaseOrder.ts + .test.ts
  • src/usecase/HandleOrderPaid.ts + .test.ts
  • src/usecase/TerminateServersWithoutCredit.ts + .test.ts

Modify (do not delete):

  • src/usecase/CreateServerForUser.ts — remove credit check block (lines ~85–94), remove userCreditsRepository dep
  • src/utils/ConfigManager.ts — remove getCreditsConfig() method and CreditsConfig import
  • index.ts — remove all exports for deleted files

Providers layer (packages/providers/)

Delete files + tests:

  • src/repository/SQliteCreditOrdersRepository.ts
  • src/repository/SQliteUserCreditsRepository.ts
  • src/services/AdyenPaymentService.ts + .test.ts
  • src/services/PaypalPaymentService.ts + .test.ts
  • src/services/PaypalPaymentServiceTypes.ts

Modify:

  • src/repository/index.ts — remove exports for deleted repos
  • src/services/index.ts — remove exports for deleted services
  • src/utils/DefaultConfigManager.ts — remove getCreditsConfig() impl
  • package.json — remove @adyen/api-library dependency

Entrypoints layer (packages/entrypoints/)

Delete directories + tests:

  • src/commands/BuyCredits/ (entire directory)
  • src/commands/GetBalance/ (entire directory)

Delete files:

  • src/jobs/ConsumeCreditsRoutine.ts + .test.ts
  • src/jobs/TerminateServersWithoutCreditRoutine.ts + .test.ts
  • src/http/middlewares/adyenMiddleware.ts
  • src/http/middlewares/paypalMiddleware.ts
  • src/http/middlewares/PayPalOrderApprovedWebhookPayload.ts

Modify:

  • src/commands/index.ts — remove BuyCredits (commented out) and GetBalance command registrations
  • src/jobs/index.ts — remove exports for deleted routines
  • src/discordBot.ts — remove all instantiation of: SQliteUserCreditsRepository, SQliteCreditOrdersRepository, PaypalPaymentService, AdyenPaymentService, ConsumeCreditsFromRunningServers, TerminateServersWithoutCredit, CreateCreditsPurchaseOrder; remove all imports and wiring for these

Migrations (migrations/)

⚠️ Do NOT delete existing migration files. Migrations are append-only. Instead, create new migration files that drop the tables:

  • Create migrations/YYYYMMDDHHMMSS_drop_user_credits.ts — drops user_credits table
  • Create migrations/YYYYMMDDHHMMSS_drop_credit_orders.ts — drops credit_orders table

Config (config/)

  • Remove credits block from config/default.json (currently { "credits": { "enabled": false } })

Verify After Removal

  • make test (or npm run test) must pass
  • Build must succeed with no TypeScript errors
  • No remaining references to credits, CreditOrder, UserCredits, PaymentService, ConsumeCredits, or TerminateServersWithoutCredit outside of git history

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech-debtTechnical debt items

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions