11package main
22
33import (
4+ "flag"
45 "log"
56
67 "github.com/joho/godotenv"
@@ -11,14 +12,22 @@ import (
1112)
1213
1314func main () {
15+ // Parse command line flags
16+ forceDelete := flag .Bool ("force" , false , "Force delete all expired, abandoned, and old completed checkouts" )
17+ flag .Parse ()
18+
1419 // Load environment variables
1520 if err := godotenv .Load (); err != nil {
1621 log .Println ("No .env file found, using environment variables" )
1722 }
1823
1924 // Initialize logger
2025 logger := logger .NewLogger ()
21- logger .Info ("Starting checkout expiry cleanup tool" )
26+ if * forceDelete {
27+ logger .Info ("Starting checkout force deletion tool" )
28+ } else {
29+ logger .Info ("Starting checkout expiry cleanup tool" )
30+ }
2231
2332 // Load configuration
2433 cfg , err := config .LoadConfig ()
@@ -39,15 +48,27 @@ func main() {
3948 // Get checkout use case
4049 checkoutUseCase := diContainer .UseCases ().CheckoutUseCase ()
4150
42- // Expire old checkouts
43- result , err := checkoutUseCase .ExpireOldCheckouts ()
44- if err != nil {
45- logger .Fatal ("Failed to expire old checkouts: %v" , err )
46- }
51+ if * forceDelete {
52+ // Force delete all expired checkouts
53+ deleteResult , err := checkoutUseCase .ForceDeleteAllExpiredCheckouts ()
54+ if err != nil {
55+ logger .Fatal ("Failed to force delete expired checkouts: %v" , err )
56+ }
57+
58+ logger .Info ("Force deletion completed:" )
59+ logger .Info ("- Force deleted checkouts: %d" , deleteResult .DeletedCount )
60+ logger .Info ("Total processed: %d" , deleteResult .DeletedCount )
61+ } else {
62+ // Regular expire old checkouts
63+ expireResult , err := checkoutUseCase .ExpireOldCheckouts ()
64+ if err != nil {
65+ logger .Fatal ("Failed to expire old checkouts: %v" , err )
66+ }
4767
48- logger .Info ("Checkout cleanup completed:" )
49- logger .Info ("- Abandoned checkouts: %d" , result .AbandonedCount )
50- logger .Info ("- Deleted checkouts: %d" , result .DeletedCount )
51- logger .Info ("- Expired checkouts: %d" , result .ExpiredCount )
52- logger .Info ("Total processed: %d" , result .AbandonedCount + result .DeletedCount + result .ExpiredCount )
68+ logger .Info ("Checkout cleanup completed:" )
69+ logger .Info ("- Abandoned checkouts: %d" , expireResult .AbandonedCount )
70+ logger .Info ("- Deleted checkouts: %d" , expireResult .DeletedCount )
71+ logger .Info ("- Expired checkouts: %d" , expireResult .ExpiredCount )
72+ logger .Info ("Total processed: %d" , expireResult .AbandonedCount + expireResult .DeletedCount + expireResult .ExpiredCount )
73+ }
5374}
0 commit comments