Files
byre/internal/store/migrateschedules.go
T

56 lines
1.3 KiB
Go
Raw Normal View History

2026-10-22 13:38:40 -07:00
package store
import (
"context"
"database/sql"
"fmt"
"g.fc.run/ai/byre/internal/api"
)
func migrateScheduleWorkflows(tx *sql.Tx, _ string) error {
rows, err := tx.Query(`SELECT id, title, model, prompt FROM schedules WHERE workflow = ''`)
if err != nil {
return err
}
type row struct{ id, title, model, prompt string }
all := []row{}
for rows.Next() {
r := row{}
err = rows.Scan(&r.id, &r.title, &r.model, &r.prompt)
if err != nil {
rows.Close()
return err
}
all = append(all, r)
}
rows.Close()
err = rows.Err()
if err != nil {
return err
}
ctx := context.Background()
for _, r := range all {
def := api.WorkflowDefinition{
Description: r.title,
Steps: []api.WorkflowStep{{Stage: r.title, Model: r.model, Prompt: r.prompt}},
}
id, err := insertDefinition(ctx, tx, def)
if err != nil {
return fmt.Errorf("schedule %s: %w", r.id, err)
}
_, err = tx.Exec(`INSERT INTO workflows (name, definition_id) VALUES (?, ?)`, r.title, id)
if err != nil {
return fmt.Errorf("schedule %s: workflow %q: %w", r.id, r.title, err)
}
_, err = tx.Exec(`UPDATE schedules SET workflow = ?, prompt = '' WHERE id = ?`, r.title, r.id)
if err != nil {
return err
}
}
_, err = tx.Exec(`ALTER TABLE schedules DROP COLUMN model`)
return err
}