Simplify Execute setup
This commit is contained in:
parent
08dbeda80a
commit
bc19b0a70f
@ -81,14 +81,9 @@ func actionExecute(
|
|||||||
|
|
||||||
db := openAndMigrateDb()
|
db := openAndMigrateDb()
|
||||||
|
|
||||||
state, err := core.GetState(db, source)
|
state, envs, argv, postProcess, err := core.GetSourceActionInputs(db, source, action)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("error: failed to load state for %s: %v", source, err)
|
log.Fatalf("error: failed to load data 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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
item, err := core.GetItem(db, source, itemId)
|
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)
|
newItem, newState, err := core.ExecuteItemAction(item, argv, envs, state, time.Minute, postProcess)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("error executing %s: %v", action, err)
|
log.Fatalf("error executing %s: %v", action, err)
|
||||||
|
@ -43,24 +43,9 @@ func sourceFetch(source string, format string, dryRun bool) {
|
|||||||
|
|
||||||
db := openAndMigrateDb()
|
db := openAndMigrateDb()
|
||||||
|
|
||||||
state, err := core.GetState(db, source)
|
state, envs, argv, postProcess, err := core.GetSourceActionInputs(db, source, "fetch")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("error: failed to load state for %s: %v", source, err)
|
log.Fatalf("error: failed to load data 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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
items, newState, err := core.Execute(source, argv, envs, state, "", time.Minute, postProcess)
|
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
|
}, 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.
|
// 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.
|
// 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")
|
id := req.PathValue("id")
|
||||||
action := req.PathValue("action")
|
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 {
|
if err != nil {
|
||||||
log.Fatalf("error: failed to load state for %s: %v", source, err)
|
http.Error(writer, fmt.Sprintf("error: failed to load data for %s: %v", source, err), 500)
|
||||||
}
|
|
||||||
|
|
||||||
envs, err := core.GetEnvs(env.db, source)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("error: failed to get envs for %s: %v", source, err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
item, err := core.GetItem(env.db, source, id)
|
item, err := core.GetItem(env.db, source, id)
|
||||||
@ -90,17 +85,6 @@ func (env *Env) doAction(writer http.ResponseWriter, req *http.Request) {
|
|||||||
return
|
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)
|
newItem, newState, err := core.ExecuteItemAction(item, argv, envs, state, time.Minute, postProcess)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(writer, err.Error(), 500)
|
http.Error(writer, err.Error(), 500)
|
||||||
|
@ -49,27 +49,9 @@ func (env *Env) fetchSource(writer http.ResponseWriter, req *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
state, err := core.GetState(env.db, source)
|
state, envs, argv, postProcess, err := core.GetSourceActionInputs(env.db, source, "fetch")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(writer, fmt.Sprintf("error: failed to get state: %v", err.Error()), 500)
|
http.Error(writer, fmt.Sprintf("error: failed to get data for %s: %v", source, 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)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user