package zw.qantra.tm.seeders; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import jakarta.annotation.PostConstruct; import org.springframework.context.annotation.Configuration; /** * Orchestrates all seeders in the correct priority order matching * ConfigController.seedLiveConfig() execution sequence: *

* 1. PaymentProcessorSeeder * 2. IntegrationProcessorSeeder * 3. CategorySeeder * 4. ProviderSeeder * 5. ChargeConditionSeeder * 6. ChargeSeeder * 7. SettingSeeder */ @Slf4j @Configuration @RequiredArgsConstructor public class LiveConfigSeeder { private final PaymentProcessorSeeder paymentProcessorSeeder; private final IntegrationProcessorSeeder integrationProcessorSeeder; private final CategorySeeder categorySeeder; private final ProviderSeeder providerSeeder; private final ChargeConditionSeeder chargeConditionSeeder; private final ChargeSeeder chargeSeeder; private final SettingSeeder settingSeeder; /** * Runs all seeders in the correct priority order. * This method is idempotent and can be called multiple times. */ @PostConstruct public void seedAll() { log.info("Starting live configuration seeding..."); log.info("Seeding Payment Processors..."); paymentProcessorSeeder.seed(); log.info("Seeding Integration Processors..."); integrationProcessorSeeder.seed(); log.info("Seeding Categories..."); categorySeeder.seed(); log.info("Seeding Providers..."); providerSeeder.seed(); log.info("Seeding Charge Conditions..."); chargeConditionSeeder.seed(); log.info("Seeding Charges..."); chargeSeeder.seed(); log.info("Seeding Settings..."); settingSeeder.seed(); log.info("Live configuration seeding complete."); } }