99
1010func init () {
1111 invoiceCmd .AddCommand (listInvoicesCmd )
12+ AddInvoiceType (listInvoicesCmd )
1213}
1314
1415var listInvoicesCmd = & cobra.Command {
@@ -23,7 +24,15 @@ var listInvoicesCmd = &cobra.Command{
2324 return err
2425 }
2526
26- invoices , err := client .Invoices .List ()
27+ if invoiceType == "" {
28+ invoiceType = "issued"
29+ }
30+
31+ if invoiceType != "all" && invoiceType != "upcoming" && invoiceType != "issued" {
32+ return fmt .Errorf ("invalid invoice type: %s" , invoiceType )
33+ }
34+
35+ invoices , err := client .Invoices .List (invoiceType )
2736 if err != nil {
2837 return err
2938 }
@@ -36,7 +45,7 @@ var listInvoicesCmd = &cobra.Command{
3645 printInvoiceListTable (invoices )
3746 fmt .Println ()
3847 fmt .Println ()
39- printInvoiceListPdfs (invoices )
48+ printInvoiceListLinks (invoices )
4049 return nil
4150 },
4251}
@@ -46,25 +55,29 @@ func printInvoiceListTable(invoices []turso.Invoice) {
4655 printTable (headers , data )
4756}
4857
49- func printInvoiceListPdfs (invoices []turso.Invoice ) {
50- headers , data := invoiceListPdfs (invoices )
58+ func printInvoiceListLinks (invoices []turso.Invoice ) {
59+ headers , data := invoiceListLinks (invoices )
5160 printTable (headers , data )
5261}
5362
5463func invoiceListTable (invoices []turso.Invoice ) ([]string , [][]string ) {
55- headers := []string {"ID" , "Amount Due" , "Due Date" , "Paid At" , "Payment Failed At" }
64+ headers := []string {"ID" , "Amount Due" , "Status" , " Due Date" , "Paid At" , "Payment Failed At" }
5665 data := make ([][]string , len (invoices ))
5766 for i , invoice := range invoices {
58- data [i ] = []string {invoice .Number , invoice .Amount , invoice .DueDate , invoice .PaidAt , invoice .PaymentFailedAt }
67+ data [i ] = []string {invoice .Number , invoice .Amount , invoice .Status , invoice . DueDate , invoice .PaidAt , invoice .PaymentFailedAt }
5968 }
6069 return headers , data
6170}
6271
63- func invoiceListPdfs (invoices []turso.Invoice ) ([]string , [][]string ) {
72+ func invoiceListLinks (invoices []turso.Invoice ) ([]string , [][]string ) {
6473 headers := []string {"ID" , "Link" }
6574 data := make ([][]string , len (invoices ))
6675 for i , invoice := range invoices {
67- data [i ] = []string {invoice .Number , invoice .InvoicePdf }
76+ invoiceLink := invoice .InvoicePdf
77+ if invoice .InvoicePdf == "" {
78+ invoiceLink = invoice .HostedInvoiceUrl
79+ }
80+ data [i ] = []string {invoice .Number , invoiceLink }
6881 }
6982 return headers , data
7083}
0 commit comments