Simplify Execute setup

This commit is contained in:
Tim Van Baak 2025-02-07 15:06:05 -08:00
parent 08dbeda80a
commit bc19b0a70f
5 changed files with 41 additions and 72 deletions

View File

@ -81,14 +81,9 @@ func actionExecute(
db := openAndMigrateDb()
state, err := core.GetState(db, source)
state, envs, argv, postProcess, err := core.GetSourceActionInputs(db, source, action)
if err != nil {
log.Fatalf("error: failed to load state for %s: %v", source, err)
}
envs, err := core.GetEnvs(db, source)
if err != nil {
log.Fatalf("error: failed to get envs for %s: %v", source, err)
log.Fatalf("error: failed to load data for %s: %v", source, err)
}
item, err := core.GetItem(db, source, itemId)
@ -104,16 +99,6 @@ func actionExecute(
}
}
argv, err := core.GetArgvForAction(db, source, action)
if err != nil {
log.Fatalf("error: failed to get action: %v", err)
}
postProcess, err := core.GetSourcePostProcessor(db, source)
if err != nil {
log.Fatalf("error: failed to get source post-processor: %v", err)
}
newItem, newState, err := core.ExecuteItemAction(item, argv, envs, state, time.Minute, postProcess)
if err != nil {
log.Fatalf("error executing %s: %v", action, err)

View File

@ -43,24 +43,9 @@ func sourceFetch(source string, format string, dryRun bool) {
db := openAndMigrateDb()
state, err := core.GetState(db, source)
state, envs, argv, postProcess, err := core.GetSourceActionInputs(db, source, "fetch")
if err != nil {
log.Fatalf("error: failed to load state for %s: %v", source, err)
}
envs, err := core.GetEnvs(db, source)
if err != nil {
log.Fatalf("error: failed to get envs for %s: %v", source, err)
}
argv, err := core.GetArgvForAction(db, source, "fetch")
if err != nil {
log.Fatalf("error: failed to get fetch action: %v", err)
}
postProcess, err := core.GetSourcePostProcessor(db, source)
if err != nil {
log.Fatalf("error: failed to get source post-processor: %v", err)
log.Fatalf("error: failed to load data for %s: %v", source, err)
}
items, newState, err := core.Execute(source, argv, envs, state, "", time.Minute, postProcess)

View File

@ -114,6 +114,39 @@ func GetSourcePostProcessor(db DB, source string) (func(item Item) Item, error)
}, nil
}
func GetSourceActionInputs(
db DB,
source string,
action string,
) (
state []byte,
envs []string,
argv []string,
postProcess func(Item) Item,
err error,
) {
state, err = GetState(db, source)
if err != nil {
return nil, nil, nil, nil, fmt.Errorf("failed to load state for %s: %v", source, err)
}
envs, err = GetEnvs(db, source)
if err != nil {
return nil, nil, nil, nil, fmt.Errorf("failed to get envs for %s: %v", source, err)
}
argv, err = GetArgvForAction(db, source, action)
if err != nil {
return nil, nil, nil, nil, fmt.Errorf("failed to get %s action for %s: %v", action, source, err)
}
postProcess, err = GetSourcePostProcessor(db, source)
if err != nil {
return nil, nil, nil, nil, fmt.Errorf("failed to get %s post-processor: %v", source, err)
}
return
}
// Given the results of a fetch, add new items, update existing items, and delete expired items.
//
// Returns the number of new and deleted items on success.

View File

@ -69,14 +69,9 @@ func (env *Env) doAction(writer http.ResponseWriter, req *http.Request) {
id := req.PathValue("id")
action := req.PathValue("action")
state, err := core.GetState(env.db, source)
state, envs, argv, postProcess, err := core.GetSourceActionInputs(env.db, source, action)
if err != nil {
log.Fatalf("error: failed to load state for %s: %v", source, err)
}
envs, err := core.GetEnvs(env.db, source)
if err != nil {
log.Fatalf("error: failed to get envs for %s: %v", source, err)
http.Error(writer, fmt.Sprintf("error: failed to load data for %s: %v", source, err), 500)
}
item, err := core.GetItem(env.db, source, id)
@ -90,17 +85,6 @@ func (env *Env) doAction(writer http.ResponseWriter, req *http.Request) {
return
}
argv, err := core.GetArgvForAction(env.db, source, action)
if err != nil {
http.Error(writer, err.Error(), 500)
return
}
postProcess, err := core.GetSourcePostProcessor(env.db, source)
if err != nil {
log.Fatalf("error: failed to get source post-processor: %v", err)
}
newItem, newState, err := core.ExecuteItemAction(item, argv, envs, state, time.Minute, postProcess)
if err != nil {
http.Error(writer, err.Error(), 500)

View File

@ -49,27 +49,9 @@ func (env *Env) fetchSource(writer http.ResponseWriter, req *http.Request) {
return
}
state, err := core.GetState(env.db, source)
state, envs, argv, postProcess, err := core.GetSourceActionInputs(env.db, source, "fetch")
if err != nil {
http.Error(writer, fmt.Sprintf("error: failed to get state: %v", err.Error()), 500)
return
}
envs, err := core.GetEnvs(env.db, source)
if err != nil {
http.Error(writer, fmt.Sprintf("error: failed to get envs: %v", err.Error()), 500)
return
}
argv, err := core.GetArgvForAction(env.db, source, "fetch")
if err != nil {
http.Error(writer, fmt.Sprintf("error: failed to get fetch argv: %v", err.Error()), 500)
return
}
postProcess, err := core.GetSourcePostProcessor(env.db, source)
if err != nil {
http.Error(writer, fmt.Sprintf("error: failed to get post-processor: %v", err.Error()), 500)
http.Error(writer, fmt.Sprintf("error: failed to get data for %s: %v", source, err.Error()), 500)
return
}