Skip to content

Commit

Permalink
sync cmd: Remove global variable RunData
Browse files Browse the repository at this point in the history
  • Loading branch information
andygrunwald committed Sep 16, 2024
1 parent 6557907 commit ccffa91
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 16 deletions.
49 changes: 33 additions & 16 deletions cmd/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,6 @@ import (
"github.com/spf13/viper"
)

var (
// TODO Remove global variable RunData
RunData repository.RunData
)

type recipeToExecute struct {
recipe *parser.Recipe
vaultItemId string
Expand Down Expand Up @@ -317,7 +312,8 @@ func runSyncCommandLogic(p *tea.Program, logger *slog.Logger, config *syncComman
stepCountInCurrentRecipe := 0
baseCountStep := 0
chromeVersion := ""
var recipeResult utils.RecipeResult
recipeRunData := make(repository.RunData, 0)
recipeResult := utils.RecipeResult{}
for i := range recipesToExecute {
totalStepCount += len(recipesToExecute[i].recipe.Steps)
}
Expand Down Expand Up @@ -418,22 +414,29 @@ func runSyncCommandLogic(p *tea.Program, logger *slog.Logger, config *syncComman

// TODO recipeResult can be empty! (not nil, but without values)

rdx := repository.RunDataSupplier{
Supplier: recipesToExecute[i].recipe.Supplier,
Version: recipesToExecute[i].recipe.Version,
runDataSupplierRecord := repository.RunDataSupplier{
// Recipe
Supplier: recipesToExecute[i].recipe.Supplier,
Version: recipesToExecute[i].recipe.Version,

// Run result
Status: recipeResult.StatusText,
LastErrorMessage: recipeResult.LastErrorMessage,
Duration: time.Since(startTime).Seconds(),
NewFilesCount: recipeResult.NewFilesCount,
Duration: time.Since(startTime).Seconds(),
}
RunData = append(RunData, rdx)

p.Send(newRecipeRunDataRecordMsg{record: runDataSupplierRecord})
recipeRunData = append(recipeRunData, runDataSupplierRecord)

// TODO Do we need viewMsgRecipeDownloadResultMsg ? We send the same data in newRecipeRunDataRecordMsg
p.Send(viewMsgRecipeDownloadResultMsg{
duration: time.Since(startTime),
newFilesCount: recipeResult.NewFilesCount,
step: recipeResult.StatusTextFormatted,
errorMessage: recipeResult.LastErrorMessage,
})

logger.Info("Downloading invoices ... completed", "supplier", recipesToExecute[i].recipe.Supplier, "supplier_type", recipesToExecute[i].recipe.Type, "duration", time.Since(startTime), "new_files", recipeResult.NewFilesCount)
invoiceLabel := "invoices"
if recipeResult.NewFilesCount == 1 {
Expand Down Expand Up @@ -529,7 +532,7 @@ func runSyncCommandLogic(p *tea.Program, logger *slog.Logger, config *syncComman
if !developmentMode && alwaysSendMetrics {
logger.Info("Sending usage metrics to Buchhalter API", "always_send_metrics", alwaysSendMetrics, "development_mode", developmentMode)
p.Send(utils.ViewStatusUpdateMsg{Message: "Sending usage metrics to Buchhalter API"})
err = buchhalterAPIClient.SendMetrics(RunData, cliVersion, chromeVersion, vaultProvider.Version, recipeParser.OicdbVersion)
err = buchhalterAPIClient.SendMetrics(recipeRunData, cliVersion, chromeVersion, vaultProvider.Version, recipeParser.OicdbVersion)
if err != nil {
logger.Error("Error sending usage metrics to Buchhalter API", "error", err)
p.Send(utils.ViewStatusUpdateMsg{
Expand Down Expand Up @@ -602,8 +605,8 @@ func prepareRecipes(logger *slog.Logger, supplier string, vaultProvider *vault.P
return r, nil
}

func sendMetrics(buchhalterAPIClient *repository.BuchhalterAPIClient, a bool, cliVersion, chromeVersion, vaultVersion, oicdbVersion string) error {
err := buchhalterAPIClient.SendMetrics(RunData, cliVersion, chromeVersion, vaultVersion, oicdbVersion)
func sendMetrics(buchhalterAPIClient *repository.BuchhalterAPIClient, a bool, runData repository.RunData, cliVersion, chromeVersion, vaultVersion, oicdbVersion string) error {
err := buchhalterAPIClient.SendMetrics(runData, cliVersion, chromeVersion, vaultVersion, oicdbVersion)
if err != nil {
return fmt.Errorf("error sending usage metrics to Buchhalter API: %w", err)
}
Expand Down Expand Up @@ -654,6 +657,9 @@ type viewModelSync struct {
quitting bool
hasError bool

// Recipe runs
recipeRunData repository.RunData

// sendMetrics selection
selectionCursor int
selectionChoice string
Expand All @@ -673,6 +679,10 @@ type updateBrowserContext struct {
ctx context.Context
}

type newRecipeRunDataRecordMsg struct {
record repository.RunDataSupplier
}

// viewQuitMsg initiates the shutdown sequence for the bubbletea application.
type viewQuitMsg struct{}

Expand Down Expand Up @@ -728,6 +738,9 @@ func initviewModelSync(logger *slog.Logger, buchhalterAPIClient *repository.Buch
results: make([]viewMsgRecipeDownloadResultMsg, numLastResults),
hasError: false,

// Recipe runs
recipeRunData: make(repository.RunData, 0),

// sendMetrics selection
selectionChoices: []string{"Yes", "No", "Always yes (don't ask again)"},
metricsRecord: &buchhalterMetricsRecord{},
Expand Down Expand Up @@ -769,7 +782,7 @@ func (m viewModelSync) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case "Yes":
return m, func() tea.Msg {
metrics := m.metricsRecord
err := sendMetrics(m.buchhalterAPIClient, false, metrics.CliVersion, metrics.ChromeVersion, metrics.VaultVersion, metrics.OicdbVersion)
err := sendMetrics(m.buchhalterAPIClient, false, m.recipeRunData, metrics.CliVersion, metrics.ChromeVersion, metrics.VaultVersion, metrics.OicdbVersion)
return utils.ViewStatusUpdateMsg{
Message: "Sent usage metrics to Buchhalter API",
Err: err,
Expand All @@ -790,7 +803,7 @@ func (m viewModelSync) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case "Always yes (don't ask again)":
return m, func() tea.Msg {
metrics := m.metricsRecord
err := sendMetrics(m.buchhalterAPIClient, true, metrics.CliVersion, metrics.ChromeVersion, metrics.VaultVersion, metrics.OicdbVersion)
err := sendMetrics(m.buchhalterAPIClient, true, m.recipeRunData, metrics.CliVersion, metrics.ChromeVersion, metrics.VaultVersion, metrics.OicdbVersion)
return utils.ViewStatusUpdateMsg{
Message: "Sent usage metrics to Buchhalter API",
Err: err,
Expand Down Expand Up @@ -859,6 +872,10 @@ func (m viewModelSync) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
}
return m, nil

case newRecipeRunDataRecordMsg:
m.recipeRunData = append(m.recipeRunData, msg.record)
return m, nil

case updateBrowserContext:
m.logger.Info("Updating browser context")
m.browserCtx = msg.ctx
Expand Down
1 change: 1 addition & 0 deletions lib/repository/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ func (c *BuchhalterAPIClient) SendMetrics(runData RunData, cliVersion, chromeVer

c.logger.Info("Sending metrics to Buchhalter SaaS",
"url", apiUrl,
"runData", metricsData.Data,
"cliVersion", metricsData.CliVersion,
"oicdbVersion", metricsData.OicdbVersion,
"vaultVersion", metricsData.VaultVersion,
Expand Down

0 comments on commit ccffa91

Please sign in to comment.