1
+ using McMaster . Extensions . CommandLineUtils ;
2
+ using Spectre . Console ;
3
+ using System . Text . Json ;
4
+
5
+ namespace Resend . Cli . Email ;
6
+
7
+ /// <summary />
8
+ [ Command ( "list" , Description = "Lists emails which were previously sent" ) ]
9
+ public class EmailListCommand
10
+ {
11
+ private readonly IResend _resend ;
12
+
13
+
14
+ /// <summary />
15
+ [ Argument ( 0 , Description = "Number of emails" ) ]
16
+ public int ? Limit { get ; set ; }
17
+
18
+ /// <summary />
19
+ [ Option ( "-b|--before" , CommandOptionType . SingleValue , Description = "Emails sent before id" ) ]
20
+ public string ? BeforeId { get ; set ; }
21
+
22
+ /// <summary />
23
+ [ Option ( "-a|--after" , CommandOptionType . SingleValue , Description = "Emails sent after id" ) ]
24
+ public string ? AfterId { get ; set ; }
25
+
26
+ /// <summary />
27
+ [ Option ( "-j|--json" , CommandOptionType . NoValue , Description = "Emit output as JSON array" ) ]
28
+ public bool InJson { get ; set ; }
29
+
30
+
31
+ /// <summary />
32
+ public EmailListCommand ( IResend resend )
33
+ {
34
+ _resend = resend ;
35
+ }
36
+
37
+
38
+ /// <summary />
39
+ public async Task < int > OnExecuteAsync ( )
40
+ {
41
+ var q = new PaginatedQuery ( )
42
+ {
43
+ Limit = this . Limit ,
44
+ Before = this . BeforeId ,
45
+ After = this . AfterId ,
46
+ } ;
47
+
48
+ var res = await _resend . EmailListAsync ( q ) ;
49
+ var results = res . Content ;
50
+
51
+
52
+ /*
53
+ *
54
+ */
55
+ if ( this . InJson == true )
56
+ {
57
+ var jso = new JsonSerializerOptions ( ) { WriteIndented = true , } ;
58
+
59
+ var json = JsonSerializer . Serialize ( results , jso ) ;
60
+ Console . WriteLine ( json ) ;
61
+ }
62
+ else
63
+ {
64
+ var table = new Table ( ) ;
65
+ table . Border = TableBorder . SimpleHeavy ;
66
+ table . AddColumn ( "Email Id" ) ;
67
+ table . AddColumn ( "Subject" ) ;
68
+ table . AddColumn ( "Date" ) ;
69
+ table . AddColumn ( "Last Event" ) ;
70
+
71
+ foreach ( var d in results . Data )
72
+ {
73
+ table . AddRow (
74
+ new Markup ( d . Id . ToString ( ) ) ,
75
+ new Markup ( d . Subject ) ,
76
+ new Markup ( d . MomentCreated . ToString ( "yyyy-MM-dd" ) ) ,
77
+ new Markup ( d . LastEvent ? . ToString ( ) ?? "" )
78
+ ) ;
79
+ }
80
+
81
+ AnsiConsole . Write ( table ) ;
82
+ }
83
+
84
+ return 0 ;
85
+ }
86
+ }
0 commit comments