Merge jira-integration branch to main (#4949)
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
package mysql
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/fleetdm/fleet/v4/server/fleet"
|
||||
"github.com/jmoiron/sqlx"
|
||||
)
|
||||
|
||||
func (ds *Datastore) NewJob(ctx context.Context, job *fleet.Job) (*fleet.Job, error) {
|
||||
query := `
|
||||
INSERT INTO jobs (
|
||||
name,
|
||||
args,
|
||||
state,
|
||||
retries,
|
||||
error
|
||||
)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
`
|
||||
result, err := ds.writer.ExecContext(ctx, query, job.Name, job.Args, job.State, job.Retries, job.Error)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
id, _ := result.LastInsertId()
|
||||
job.ID = uint(id)
|
||||
|
||||
return job, nil
|
||||
}
|
||||
|
||||
func (ds *Datastore) GetQueuedJobs(ctx context.Context, maxNumJobs int) ([]*fleet.Job, error) {
|
||||
query := `
|
||||
SELECT
|
||||
id, created_at, updated_at, name, args, state, retries, error
|
||||
FROM
|
||||
jobs
|
||||
WHERE
|
||||
state = ?
|
||||
ORDER BY
|
||||
created_at asc
|
||||
LIMIT ?
|
||||
`
|
||||
|
||||
var jobs []*fleet.Job
|
||||
err := sqlx.SelectContext(ctx, ds.reader, &jobs, query, fleet.JobStateQueued, maxNumJobs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return jobs, nil
|
||||
}
|
||||
|
||||
func (ds *Datastore) UpdateJob(ctx context.Context, id uint, job *fleet.Job) (*fleet.Job, error) {
|
||||
query := `
|
||||
UPDATE jobs
|
||||
SET
|
||||
state = ?,
|
||||
retries = ?,
|
||||
error = ?
|
||||
WHERE
|
||||
id = ?
|
||||
`
|
||||
_, err := ds.writer.ExecContext(ctx, query, job.State, job.Retries, job.Error, job.ID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return job, nil
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package tables
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func init() {
|
||||
MigrationClient.AddMigration(Up_20220330100659, Down_20220330100659)
|
||||
}
|
||||
|
||||
func Up_20220330100659(tx *sql.Tx) error {
|
||||
_, err := tx.Exec(`
|
||||
CREATE TABLE jobs (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
args JSON,
|
||||
state VARCHAR(255) NOT NULL,
|
||||
retries INT NOT NULL DEFAULT 0,
|
||||
error TEXT
|
||||
)
|
||||
`)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "create table")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func Down_20220330100659(tx *sql.Tx) error {
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package tables
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestUp_20220330100659(t *testing.T) {
|
||||
db := applyUpToPrev(t)
|
||||
|
||||
applyNext(t, db)
|
||||
|
||||
query := `
|
||||
INSERT INTO jobs (
|
||||
name,
|
||||
args,
|
||||
state,
|
||||
retries,
|
||||
error
|
||||
)
|
||||
VALUES (?, ?, ?, ?, ?)
|
||||
`
|
||||
_, err := db.Exec(query, "test", nil, "queued", 0, "")
|
||||
require.NoError(t, err)
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user