// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.13.0

package db

import (
	"database/sql"
	"time"

	"github.com/google/uuid"
)

type Task struct {
	WorkflowID       uuid.UUID
	Name             string
	Finished         bool
	Result           sql.NullString
	Error            sql.NullString
	CreatedAt        time.Time
	UpdatedAt        time.Time
	ApprovedAt       sql.NullTime
	ReadyForApproval bool
}

type TaskLog struct {
	ID         int32
	WorkflowID uuid.UUID
	TaskName   string
	Body       string
	CreatedAt  time.Time
	UpdatedAt  time.Time
}

type Workflow struct {
	ID        uuid.UUID
	Params    sql.NullString
	Name      sql.NullString
	CreatedAt time.Time
	UpdatedAt time.Time
	Finished  bool
	Output    string
	Error     string
}
