mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
HTTP Triggers hookup (#1086)
* Initial suypport for invoking tiggers * dupe method * tighten server constraints * runner tests not working yet * basic route tests passing * post rebase fixes * add hybrid support for trigger invoke and tests * consoloidate all hybrid evil into one place * cleanup and make triggers unique by source * fix oops with Agent * linting * review fixes
This commit is contained in:
@@ -127,6 +127,8 @@ const (
|
||||
triggerSelector = `SELECT id,name,app_id,fn_id,type,source,annotations,created_at,updated_at FROM triggers`
|
||||
triggerIDSelector = triggerSelector + ` WHERE id=?`
|
||||
|
||||
triggerIDSourceSelector = triggerSelector + ` WHERE app_id=? AND type=? AND source=?`
|
||||
|
||||
EnvDBPingMaxRetries = "FN_DS_DB_PING_MAX_RETRIES"
|
||||
)
|
||||
|
||||
@@ -1185,6 +1187,8 @@ func (ds *SQLStore) InsertTrigger(ctx context.Context, newTrigger *models.Trigge
|
||||
if err := r.Scan(new(int)); err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return models.ErrAppsNotFound
|
||||
} else if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1194,12 +1198,23 @@ func (ds *SQLStore) InsertTrigger(ctx context.Context, newTrigger *models.Trigge
|
||||
if err := r.Scan(&app_id); err != nil {
|
||||
if err == sql.ErrNoRows {
|
||||
return models.ErrFnsNotFound
|
||||
} else if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if app_id != trigger.AppID {
|
||||
return models.ErrTriggerFnIDNotSameApp
|
||||
}
|
||||
|
||||
query = tx.Rebind(`SELECT 1 FROM triggers WHERE app_id=? AND type=? and source=?`)
|
||||
r = tx.QueryRowContext(ctx, query, trigger.AppID, trigger.Type, trigger.Source)
|
||||
err := r.Scan(new(int))
|
||||
if err == nil {
|
||||
return models.ErrTriggerSourceExists
|
||||
} else if err != sql.ErrNoRows {
|
||||
return err
|
||||
}
|
||||
|
||||
query = tx.Rebind(`INSERT INTO triggers (
|
||||
id,
|
||||
name,
|
||||
@@ -1318,8 +1333,7 @@ func (ds *SQLStore) GetTriggerByID(ctx context.Context, triggerID string) (*mode
|
||||
err := row.StructScan(&trigger)
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, models.ErrTriggerNotFound
|
||||
}
|
||||
if err != nil {
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -1403,10 +1417,26 @@ func (ds *SQLStore) GetTriggers(ctx context.Context, filter *models.TriggerFilte
|
||||
if err == sql.ErrNoRows {
|
||||
return res, nil // no error for empty list
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (ds *SQLStore) GetTriggerBySource(ctx context.Context, appId string, triggerType, source string) (*models.Trigger, error) {
|
||||
var trigger models.Trigger
|
||||
|
||||
query := ds.db.Rebind(triggerIDSourceSelector)
|
||||
row := ds.db.QueryRowxContext(ctx, query, appId, triggerType, source)
|
||||
|
||||
err := row.StructScan(&trigger)
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, models.ErrTriggerNotFound
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &trigger, nil
|
||||
}
|
||||
|
||||
// Close closes the database, releasing any open resources.
|
||||
func (ds *SQLStore) Close() error {
|
||||
return ds.db.Close()
|
||||
|
||||
Reference in New Issue
Block a user