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
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.tssrc/domain/CreditOrderRequest.tssrc/domain/CreditsConfig.tsCreditsConfigexport fromsrc/domain/index.tsRepositories (delete files):
src/repository/CreditOrdersRepository.tssrc/repository/UserCreditsRepository.tsServices (delete file):
src/services/PaymentService.tsUse cases (delete files + tests):
src/usecase/ConsumeCreditsFromRunningServers.ts+.test.tssrc/usecase/CreateCreditsPurchaseOrder.ts+.test.tssrc/usecase/HandleOrderPaid.ts+.test.tssrc/usecase/TerminateServersWithoutCredit.ts+.test.tsModify (do not delete):
src/usecase/CreateServerForUser.ts— remove credit check block (lines ~85–94), removeuserCreditsRepositorydepsrc/utils/ConfigManager.ts— removegetCreditsConfig()method andCreditsConfigimportindex.ts— remove all exports for deleted filesProviders layer (
packages/providers/)Delete files + tests:
src/repository/SQliteCreditOrdersRepository.tssrc/repository/SQliteUserCreditsRepository.tssrc/services/AdyenPaymentService.ts+.test.tssrc/services/PaypalPaymentService.ts+.test.tssrc/services/PaypalPaymentServiceTypes.tsModify:
src/repository/index.ts— remove exports for deleted repossrc/services/index.ts— remove exports for deleted servicessrc/utils/DefaultConfigManager.ts— removegetCreditsConfig()implpackage.json— remove@adyen/api-librarydependencyEntrypoints layer (
packages/entrypoints/)Delete directories + tests:
src/commands/BuyCredits/(entire directory)src/commands/GetBalance/(entire directory)Delete files:
src/jobs/ConsumeCreditsRoutine.ts+.test.tssrc/jobs/TerminateServersWithoutCreditRoutine.ts+.test.tssrc/http/middlewares/adyenMiddleware.tssrc/http/middlewares/paypalMiddleware.tssrc/http/middlewares/PayPalOrderApprovedWebhookPayload.tsModify:
src/commands/index.ts— removeBuyCredits(commented out) andGetBalancecommand registrationssrc/jobs/index.ts— remove exports for deleted routinessrc/discordBot.ts— remove all instantiation of:SQliteUserCreditsRepository,SQliteCreditOrdersRepository,PaypalPaymentService,AdyenPaymentService,ConsumeCreditsFromRunningServers,TerminateServersWithoutCredit,CreateCreditsPurchaseOrder; remove all imports and wiring for theseMigrations (
migrations/)migrations/YYYYMMDDHHMMSS_drop_user_credits.ts— dropsuser_creditstablemigrations/YYYYMMDDHHMMSS_drop_credit_orders.ts— dropscredit_orderstableConfig (
config/)creditsblock fromconfig/default.json(currently{ "credits": { "enabled": false } })Verify After Removal
make test(ornpm run test) must passcredits,CreditOrder,UserCredits,PaymentService,ConsumeCredits, orTerminateServersWithoutCreditoutside of git history