@@ -48,6 +48,9 @@ func main() {
4848 // Initialize API server
4949 server := api .NewServer (cfg , db , logger )
5050
51+ // Start background checkout expiry process
52+ go startCheckoutExpiryProcess (server , logger )
53+
5154 // Start server in a goroutine
5255 go func () {
5356 logger .Info ("Starting server on port %s" , cfg .Server .Port )
@@ -73,3 +76,33 @@ func main() {
7376
7477 logger .Info ("Server exited properly" )
7578}
79+
80+ // startCheckoutExpiryProcess runs a background process to expire old checkouts
81+ func startCheckoutExpiryProcess (server * api.Server , logger logger.Logger ) {
82+ // Run every 15 minutes
83+ ticker := time .NewTicker (15 * time .Minute )
84+ defer ticker .Stop ()
85+
86+ // Run immediately on startup
87+ expireCheckouts (server , logger )
88+
89+ for range ticker .C {
90+ expireCheckouts (server , logger )
91+ }
92+ }
93+
94+ // expireCheckouts expires old checkouts
95+ func expireCheckouts (server * api.Server , logger logger.Logger ) {
96+ checkoutUseCase := server .GetContainer ().UseCases ().CheckoutUseCase ()
97+ if checkoutUseCase == nil {
98+ logger .Error ("CheckoutUseCase not available" )
99+ return
100+ }
101+
102+ amountExpired , err := checkoutUseCase .ExpireOldCheckouts ()
103+ if err != nil {
104+ logger .Error ("Failed to expire old checkouts: %v" , err )
105+ } else {
106+ logger .Info ("Expired %d old checkouts" , amountExpired )
107+ }
108+ }
0 commit comments