Simplify Execute setup
This commit is contained in:
parent
08dbeda80a
commit
bc19b0a70f
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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.
|
||||
|
20
web/item.go
20
web/item.go
@ -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)
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user