Mercurial > gemma
view pkg/scheduler/boot.go @ 1600:658c1ebc1707
WFS Capabilities parser: Parse FeatureTypeList, too.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 17 Dec 2018 12:23:18 +0100 |
parents | 62171cd9a42b |
children | f39957ea08aa |
line wrap: on
line source
// This is Free Software under GNU Affero General Public License v >= 3.0 // without warranty, see README.md and license for details. // // SPDX-License-Identifier: AGPL-3.0-or-later // License-Filename: LICENSES/AGPL-3.0.txt // // Copyright (C) 2018 by via donau // – Österreichische Wasserstraßen-Gesellschaft mbH // Software engineering by Intevation GmbH // // Author(s): // * Sascha L. Teichmann <sascha.teichmann@intevation.de> package scheduler import ( "context" "database/sql" "log" "gemma.intevation.de/gemma/pkg/auth" "gemma.intevation.de/gemma/pkg/config" ) const ( bootRole = "sys_admin" selectImportConfSQL = ` SELECT id, username, kind, cron FROM waterway.import_configuration WHERE cron IS NOT NULL` ) func init() { go boot() } // boot starts the scheduler with the configurations from // the database which have a schedule. func boot() { config.WaitReady() log.Println("info: booting scheduler from database.") ctx := context.Background() err := auth.RunAs( ctx, bootRole, func(conn *sql.Conn) error { rows, err := conn.QueryContext(ctx, selectImportConfSQL) if err != nil { return err } defer rows.Close() err = BootActions(func(ba *BoundAction) (bool, error) { if err != nil { return false, err } if !rows.Next() { return false, nil } var id int64 if err = rows.Scan( &id, &ba.User, &ba.Name, &ba.Spec, ); err != nil { return false, err } ba.CfgID = &id return true, nil }) if err != nil { return err } return rows.Err() }) if err != nil { log.Printf("error: %v\n", err) } }