Update cron type with ref pattern

This commit is contained in:
2023-04-08 15:18:29 -06:00
parent a9481fa9bc
commit fe9e1cac15
4 changed files with 25 additions and 9 deletions
+15 -1
View File
@@ -112,6 +112,16 @@ func createSchema(db database.Database, pollChan chan uuid.UUID) (graphql.Schema
return nil, nil return nil, nil
}, },
}, },
"pattern": &graphql.Field{
Type: graphql.NewNonNull(graphql.String),
Description: "A pattern for determining what refs to run the cron on.",
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
if cron, ok := p.Source.(database.Cron); ok {
return cron.Pattern, nil
}
return nil, nil
},
},
}, },
}) })
@@ -779,6 +789,9 @@ func createSchema(db database.Database, pollChan chan uuid.UUID) (graphql.Schema
"cron": &graphql.ArgumentConfig{ "cron": &graphql.ArgumentConfig{
Type: graphql.NewNonNull(graphql.String), Type: graphql.NewNonNull(graphql.String),
}, },
"pattern": &graphql.ArgumentConfig{
Type: graphql.NewNonNull(graphql.String),
},
"pipelineId": &graphql.ArgumentConfig{ "pipelineId": &graphql.ArgumentConfig{
Type: graphql.NewNonNull(graphql.String), Type: graphql.NewNonNull(graphql.String),
}, },
@@ -786,13 +799,14 @@ func createSchema(db database.Database, pollChan chan uuid.UUID) (graphql.Schema
Resolve: func(params graphql.ResolveParams) (interface{}, error) { Resolve: func(params graphql.ResolveParams) (interface{}, error) {
cron := params.Args["cron"].(string) cron := params.Args["cron"].(string)
pattern := params.Args["pattern"].(string)
pipelineId, err := uuid.Parse(params.Args["pipelineId"].(string)) pipelineId, err := uuid.Parse(params.Args["pipelineId"].(string))
if err != nil { if err != nil {
return nil, err return nil, err
} }
err = db.AddCronForPipeline(pipelineId, cron) err = db.AddCronForPipeline(pipelineId, cron, pattern)
if err != nil { if err != nil {
return nil, err return nil, err
} }
+1
View File
@@ -194,6 +194,7 @@ CREATE TABLE crons (
id UUID PRIMARY KEY, id UUID PRIMARY KEY,
pipeline_id UUID NOT NULL, pipeline_id UUID NOT NULL,
cron TEXT NOT NULL, cron TEXT NOT NULL,
pattern TEXT NOT NULL,
CONSTRAINT fk_pipeline_id CONSTRAINT fk_pipeline_id
FOREIGN KEY(pipeline_id) FOREIGN KEY(pipeline_id)
+6 -6
View File
@@ -673,7 +673,7 @@ RETURNING id, name, token;`
func (db *Database) GetCronsForPipeline(pipelineId uuid.UUID) ([]Cron, error) { func (db *Database) GetCronsForPipeline(pipelineId uuid.UUID) ([]Cron, error) {
query := ` query := `
SELECT id, cron SELECT id, cron, pattern
FROM crons FROM crons
WHERE pipeline_id=$1;` WHERE pipeline_id=$1;`
@@ -689,7 +689,7 @@ WHERE pipeline_id=$1;`
var cron Cron var cron Cron
var idStr string var idStr string
if err := cronEntrys.Scan( if err := cronEntrys.Scan(
&idStr, &cron.Cron, &idStr, &cron.Cron, &cron.Pattern,
); err != nil { ); err != nil {
return crons, err return crons, err
} }
@@ -705,12 +705,12 @@ WHERE pipeline_id=$1;`
return crons, nil return crons, nil
} }
func (db *Database) AddCronForPipeline(pipelineId uuid.UUID, cron string) error { func (db *Database) AddCronForPipeline(pipelineId uuid.UUID, cron string, pattern string) error {
query := ` query := `
INSERT INTO crons (id, pipeline_id, cron) INSERT INTO crons (id, pipeline_id, cron, pattern)
VALUES (uuid_generate_v4(), $1, $2);` VALUES (uuid_generate_v4(), $1, $2, $3);`
_, err := db.Conn.Exec(context.Background(), query, pipelineId, cron) _, err := db.Conn.Exec(context.Background(), query, pipelineId, cron, pattern)
return err return err
} }
+1
View File
@@ -83,4 +83,5 @@ type Runner struct {
type Cron struct { type Cron struct {
Id uuid.UUID Id uuid.UUID
Cron string Cron string
Pattern string
} }