fix: encode workflow hidden flag for postgres (#1614)
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package sqlite
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/kandev/kandev/internal/task/models"
|
||||
"github.com/kandev/kandev/internal/testutil"
|
||||
)
|
||||
|
||||
@@ -54,6 +56,54 @@ func TestPostgresSkipsLegacyTaskEnvironmentBackfill(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestPostgresWorkflowHiddenRoundTrip(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
db := testutil.OpenIsolatedPostgres(t, testutil.PostgresDSNFromEnv(t))
|
||||
repo, err := NewWithDB(db, db, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("init fresh postgres schema: %v", err)
|
||||
}
|
||||
if err := repo.CreateWorkspace(ctx, &models.Workspace{ID: "ws-postgres", Name: "Postgres"}); err != nil {
|
||||
t.Fatalf("create workspace: %v", err)
|
||||
}
|
||||
|
||||
visible := &models.Workflow{ID: "wf-visible", WorkspaceID: "ws-postgres", Name: "Visible"}
|
||||
if err := repo.CreateWorkflow(ctx, visible); err != nil {
|
||||
t.Fatalf("create visible workflow: %v", err)
|
||||
}
|
||||
retrieved, err := repo.GetWorkflow(ctx, visible.ID)
|
||||
if err != nil {
|
||||
t.Fatalf("get visible workflow: %v", err)
|
||||
}
|
||||
if retrieved.Hidden {
|
||||
t.Fatalf("visible workflow Hidden = true, want false")
|
||||
}
|
||||
|
||||
hidden := &models.Workflow{ID: "wf-hidden", WorkspaceID: "ws-postgres", Name: "Hidden", Hidden: true}
|
||||
if err := repo.CreateWorkflow(ctx, hidden); err != nil {
|
||||
t.Fatalf("create hidden workflow: %v", err)
|
||||
}
|
||||
retrieved, err = repo.GetWorkflow(ctx, hidden.ID)
|
||||
if err != nil {
|
||||
t.Fatalf("get hidden workflow: %v", err)
|
||||
}
|
||||
if !retrieved.Hidden {
|
||||
t.Fatalf("hidden workflow Hidden = false, want true")
|
||||
}
|
||||
|
||||
hidden.Hidden = false
|
||||
if err := repo.UpdateWorkflow(ctx, hidden); err != nil {
|
||||
t.Fatalf("update hidden workflow to visible: %v", err)
|
||||
}
|
||||
retrieved, err = repo.GetWorkflow(ctx, hidden.ID)
|
||||
if err != nil {
|
||||
t.Fatalf("get updated workflow: %v", err)
|
||||
}
|
||||
if retrieved.Hidden {
|
||||
t.Fatalf("updated workflow Hidden = true, want false")
|
||||
}
|
||||
}
|
||||
|
||||
func TestPostgresTaskEnvironmentReposMultiBranchMigration(t *testing.T) {
|
||||
db := testutil.OpenIsolatedPostgres(t, testutil.PostgresDSNFromEnv(t))
|
||||
if _, err := db.Exec(`
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"github.com/google/uuid"
|
||||
"github.com/jmoiron/sqlx"
|
||||
|
||||
"github.com/kandev/kandev/internal/db/dialect"
|
||||
"github.com/kandev/kandev/internal/task/models"
|
||||
)
|
||||
|
||||
@@ -53,7 +54,7 @@ func (r *Repository) CreateWorkflow(ctx context.Context, workflow *models.Workfl
|
||||
_, err = r.db.ExecContext(ctx, r.db.Rebind(`
|
||||
INSERT INTO workflows (id, workspace_id, name, description, agent_profile_id, workflow_template_id, sort_order, hidden, style, created_at, updated_at)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||
`), workflow.ID, workflow.WorkspaceID, workflow.Name, workflow.Description, workflow.AgentProfileID, workflow.WorkflowTemplateID, workflow.SortOrder, workflow.Hidden, normalizeWorkflowStyle(workflow.Style), workflow.CreatedAt, workflow.UpdatedAt)
|
||||
`), workflow.ID, workflow.WorkspaceID, workflow.Name, workflow.Description, workflow.AgentProfileID, workflow.WorkflowTemplateID, workflow.SortOrder, dialect.BoolToInt(workflow.Hidden), normalizeWorkflowStyle(workflow.Style), workflow.CreatedAt, workflow.UpdatedAt)
|
||||
|
||||
return err
|
||||
}
|
||||
@@ -81,6 +82,7 @@ type workflowScanner interface {
|
||||
func scanWorkflowRow(scanner workflowScanner) (*models.Workflow, error) {
|
||||
workflow := &models.Workflow{}
|
||||
var workflowTemplateID, agentProfileID, style sql.NullString
|
||||
var hidden int
|
||||
if err := scanner.Scan(
|
||||
&workflow.ID,
|
||||
&workflow.WorkspaceID,
|
||||
@@ -89,13 +91,14 @@ func scanWorkflowRow(scanner workflowScanner) (*models.Workflow, error) {
|
||||
&agentProfileID,
|
||||
&workflowTemplateID,
|
||||
&workflow.SortOrder,
|
||||
&workflow.Hidden,
|
||||
&hidden,
|
||||
&style,
|
||||
&workflow.CreatedAt,
|
||||
&workflow.UpdatedAt,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
workflow.Hidden = hidden != 0
|
||||
if agentProfileID.Valid {
|
||||
workflow.AgentProfileID = agentProfileID.String
|
||||
}
|
||||
@@ -143,7 +146,7 @@ func (r *Repository) UpdateWorkflow(ctx context.Context, workflow *models.Workfl
|
||||
|
||||
result, err := r.db.ExecContext(ctx, r.db.Rebind(`
|
||||
UPDATE workflows SET name = ?, description = ?, agent_profile_id = ?, workflow_template_id = ?, hidden = ?, style = ?, updated_at = ? WHERE id = ?
|
||||
`), workflow.Name, workflow.Description, workflow.AgentProfileID, workflow.WorkflowTemplateID, workflow.Hidden, normalizeWorkflowStyle(workflow.Style), workflow.UpdatedAt, workflow.ID)
|
||||
`), workflow.Name, workflow.Description, workflow.AgentProfileID, workflow.WorkflowTemplateID, dialect.BoolToInt(workflow.Hidden), normalizeWorkflowStyle(workflow.Style), workflow.UpdatedAt, workflow.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user