abstract providers behind a common interface
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2023-11-12 21:40:00 -07:00
parent 82f9c94d10
commit 7284545571
15 changed files with 292 additions and 218 deletions

20
accountProviders.go Normal file
View File

@@ -0,0 +1,20 @@
package main
import (
"deadbeef.codes/steven/ynab-portfolio-monitor/bitcoin"
"deadbeef.codes/steven/ynab-portfolio-monitor/questrade"
)
// AccountProvider is the base set of requirements to be implemented for any integration
type AccountProvider interface {
Name() string // Returns the name of the provider
Configure() error // Configures the provider for first use - if an error is returned the provider is not used
GetBalances() ([]int, []string, error) // A slice of balances, and an index mapped slice of ynab account IDs this provider handles is returned
}
// Instantiate all providers for configuration
// If configuration for a provider does not exist, it will be pruned during init()
var allProviders []AccountProvider = []AccountProvider{
&questrade.Provider{},
&bitcoin.Provider{},
}