migrate

package
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 17, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// WithGlobalUniqueID sets the universal ids options to the migration.
	// If this option is enabled, ent migration will allocate a 1<<32 range
	// for the ids of each entity (table).
	// Note that this option cannot be applied on tables that already exist.
	WithGlobalUniqueID = schema.WithGlobalUniqueID
	// WithDropColumn sets the drop column option to the migration.
	// If this option is enabled, ent migration will drop old columns
	// that were used for both fields and edges. This defaults to false.
	WithDropColumn = schema.WithDropColumn
	// WithDropIndex sets the drop index option to the migration.
	// If this option is enabled, ent migration will drop old indexes
	// that were defined in the schema. This defaults to false.
	// Note that unique constraints are defined using `UNIQUE INDEX`,
	// and therefore, it's recommended to enable this option to get more
	// flexibility in the schema changes.
	WithDropIndex = schema.WithDropIndex
	// WithForeignKeys enables creating foreign-key in schema DDL. This defaults to true.
	WithForeignKeys = schema.WithForeignKeys
)
View Source
var (
	// AuditLogsColumns holds the columns for the "audit_logs" table.
	AuditLogsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "session_key", Type: field.TypeString, Nullable: true},
		{Name: "action", Type: field.TypeEnum, Enums: []string{"tool_call", "knowledge_save", "learning_save", "skill_create", "skill_execute", "skill_import", "skill_import_bulk", "knowledge_search", "approval_request", "approval_response"}},
		{Name: "actor", Type: field.TypeString},
		{Name: "target", Type: field.TypeString, Nullable: true},
		{Name: "details", Type: field.TypeJSON, Nullable: true},
		{Name: "timestamp", Type: field.TypeTime},
	}
	// AuditLogsTable holds the schema information for the "audit_logs" table.
	AuditLogsTable = &schema.Table{
		Name:       "audit_logs",
		Columns:    AuditLogsColumns,
		PrimaryKey: []*schema.Column{AuditLogsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "auditlog_session_key",
				Unique:  false,
				Columns: []*schema.Column{AuditLogsColumns[1]},
			},
			{
				Name:    "auditlog_action",
				Unique:  false,
				Columns: []*schema.Column{AuditLogsColumns[2]},
			},
			{
				Name:    "auditlog_timestamp",
				Unique:  false,
				Columns: []*schema.Column{AuditLogsColumns[6]},
			},
		},
	}
	// ConfigProfilesColumns holds the columns for the "config_profiles" table.
	ConfigProfilesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "name", Type: field.TypeString, Unique: true},
		{Name: "encrypted_data", Type: field.TypeBytes},
		{Name: "active", Type: field.TypeBool, Default: false},
		{Name: "version", Type: field.TypeInt, Default: 1},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "updated_at", Type: field.TypeTime},
	}
	// ConfigProfilesTable holds the schema information for the "config_profiles" table.
	ConfigProfilesTable = &schema.Table{
		Name:       "config_profiles",
		Columns:    ConfigProfilesColumns,
		PrimaryKey: []*schema.Column{ConfigProfilesColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "configprofile_name",
				Unique:  false,
				Columns: []*schema.Column{ConfigProfilesColumns[1]},
			},
			{
				Name:    "configprofile_active",
				Unique:  false,
				Columns: []*schema.Column{ConfigProfilesColumns[3]},
			},
		},
	}
	// CronJobsColumns holds the columns for the "cron_jobs" table.
	CronJobsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "name", Type: field.TypeString, Unique: true},
		{Name: "schedule_type", Type: field.TypeEnum, Enums: []string{"at", "every", "cron"}},
		{Name: "schedule", Type: field.TypeString},
		{Name: "prompt", Type: field.TypeString, Size: 2147483647},
		{Name: "session_mode", Type: field.TypeString, Default: "isolated"},
		{Name: "deliver_to", Type: field.TypeJSON, Nullable: true},
		{Name: "timezone", Type: field.TypeString, Default: "UTC"},
		{Name: "enabled", Type: field.TypeBool, Default: true},
		{Name: "timeout_ms", Type: field.TypeInt64, Nullable: true},
		{Name: "last_run_at", Type: field.TypeTime, Nullable: true},
		{Name: "next_run_at", Type: field.TypeTime, Nullable: true},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "updated_at", Type: field.TypeTime},
	}
	// CronJobsTable holds the schema information for the "cron_jobs" table.
	CronJobsTable = &schema.Table{
		Name:       "cron_jobs",
		Columns:    CronJobsColumns,
		PrimaryKey: []*schema.Column{CronJobsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "cronjob_enabled",
				Unique:  false,
				Columns: []*schema.Column{CronJobsColumns[8]},
			},
			{
				Name:    "cronjob_next_run_at",
				Unique:  false,
				Columns: []*schema.Column{CronJobsColumns[11]},
			},
		},
	}
	// CronJobHistoriesColumns holds the columns for the "cron_job_histories" table.
	CronJobHistoriesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "job_id", Type: field.TypeUUID},
		{Name: "job_name", Type: field.TypeString},
		{Name: "status", Type: field.TypeEnum, Enums: []string{"running", "completed", "failed"}, Default: "running"},
		{Name: "prompt", Type: field.TypeString, Size: 2147483647},
		{Name: "result", Type: field.TypeString, Nullable: true, Size: 2147483647},
		{Name: "error_message", Type: field.TypeString, Nullable: true},
		{Name: "tokens_used", Type: field.TypeInt, Default: 0},
		{Name: "started_at", Type: field.TypeTime},
		{Name: "completed_at", Type: field.TypeTime, Nullable: true},
	}
	// CronJobHistoriesTable holds the schema information for the "cron_job_histories" table.
	CronJobHistoriesTable = &schema.Table{
		Name:       "cron_job_histories",
		Columns:    CronJobHistoriesColumns,
		PrimaryKey: []*schema.Column{CronJobHistoriesColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "cronjobhistory_job_id",
				Unique:  false,
				Columns: []*schema.Column{CronJobHistoriesColumns[1]},
			},
			{
				Name:    "cronjobhistory_status",
				Unique:  false,
				Columns: []*schema.Column{CronJobHistoriesColumns[3]},
			},
			{
				Name:    "cronjobhistory_started_at",
				Unique:  false,
				Columns: []*schema.Column{CronJobHistoriesColumns[8]},
			},
		},
	}
	// EscrowDealsColumns holds the columns for the "escrow_deals" table.
	EscrowDealsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "escrow_id", Type: field.TypeString, Unique: true},
		{Name: "buyer_did", Type: field.TypeString},
		{Name: "seller_did", Type: field.TypeString},
		{Name: "total_amount", Type: field.TypeString},
		{Name: "status", Type: field.TypeString, Default: "pending"},
		{Name: "milestones", Type: field.TypeBytes, Nullable: true},
		{Name: "task_id", Type: field.TypeString, Nullable: true},
		{Name: "reason", Type: field.TypeString, Nullable: true},
		{Name: "dispute_note", Type: field.TypeString, Nullable: true},
		{Name: "chain_id", Type: field.TypeInt64, Nullable: true, Default: 0},
		{Name: "hub_address", Type: field.TypeString, Nullable: true},
		{Name: "on_chain_deal_id", Type: field.TypeString, Nullable: true},
		{Name: "deposit_tx_hash", Type: field.TypeString, Nullable: true},
		{Name: "release_tx_hash", Type: field.TypeString, Nullable: true},
		{Name: "refund_tx_hash", Type: field.TypeString, Nullable: true},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "updated_at", Type: field.TypeTime},
		{Name: "expires_at", Type: field.TypeTime},
	}
	// EscrowDealsTable holds the schema information for the "escrow_deals" table.
	EscrowDealsTable = &schema.Table{
		Name:       "escrow_deals",
		Columns:    EscrowDealsColumns,
		PrimaryKey: []*schema.Column{EscrowDealsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "escrowdeal_buyer_did",
				Unique:  false,
				Columns: []*schema.Column{EscrowDealsColumns[2]},
			},
			{
				Name:    "escrowdeal_seller_did",
				Unique:  false,
				Columns: []*schema.Column{EscrowDealsColumns[3]},
			},
			{
				Name:    "escrowdeal_status",
				Unique:  false,
				Columns: []*schema.Column{EscrowDealsColumns[5]},
			},
			{
				Name:    "escrowdeal_on_chain_deal_id",
				Unique:  false,
				Columns: []*schema.Column{EscrowDealsColumns[12]},
			},
		},
	}
	// ExternalRefsColumns holds the columns for the "external_refs" table.
	ExternalRefsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "name", Type: field.TypeString, Unique: true},
		{Name: "ref_type", Type: field.TypeEnum, Enums: []string{"url", "file", "mcp"}},
		{Name: "location", Type: field.TypeString},
		{Name: "summary", Type: field.TypeString, Nullable: true, Size: 2147483647},
		{Name: "metadata", Type: field.TypeJSON, Nullable: true},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "updated_at", Type: field.TypeTime},
	}
	// ExternalRefsTable holds the schema information for the "external_refs" table.
	ExternalRefsTable = &schema.Table{
		Name:       "external_refs",
		Columns:    ExternalRefsColumns,
		PrimaryKey: []*schema.Column{ExternalRefsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "externalref_ref_type",
				Unique:  false,
				Columns: []*schema.Column{ExternalRefsColumns[2]},
			},
		},
	}
	// InquiriesColumns holds the columns for the "inquiries" table.
	InquiriesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "session_key", Type: field.TypeString},
		{Name: "topic", Type: field.TypeString},
		{Name: "question", Type: field.TypeString, Size: 2147483647},
		{Name: "context", Type: field.TypeString, Nullable: true, Size: 2147483647},
		{Name: "priority", Type: field.TypeEnum, Enums: []string{"low", "medium", "high"}, Default: "medium"},
		{Name: "status", Type: field.TypeEnum, Enums: []string{"pending", "resolved", "dismissed"}, Default: "pending"},
		{Name: "answer", Type: field.TypeString, Nullable: true, Size: 2147483647},
		{Name: "knowledge_key", Type: field.TypeString, Nullable: true},
		{Name: "source_observation_id", Type: field.TypeString, Nullable: true},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "resolved_at", Type: field.TypeTime, Nullable: true},
	}
	// InquiriesTable holds the schema information for the "inquiries" table.
	InquiriesTable = &schema.Table{
		Name:       "inquiries",
		Columns:    InquiriesColumns,
		PrimaryKey: []*schema.Column{InquiriesColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "inquiry_session_key_status",
				Unique:  false,
				Columns: []*schema.Column{InquiriesColumns[1], InquiriesColumns[6]},
			},
			{
				Name:    "inquiry_status",
				Unique:  false,
				Columns: []*schema.Column{InquiriesColumns[6]},
			},
		},
	}
	// KeysColumns holds the columns for the "keys" table.
	KeysColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "name", Type: field.TypeString, Unique: true},
		{Name: "remote_key_id", Type: field.TypeString},
		{Name: "type", Type: field.TypeEnum, Enums: []string{"encryption", "signing"}, Default: "encryption"},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "last_used_at", Type: field.TypeTime, Nullable: true},
	}
	// KeysTable holds the schema information for the "keys" table.
	KeysTable = &schema.Table{
		Name:       "keys",
		Columns:    KeysColumns,
		PrimaryKey: []*schema.Column{KeysColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "key_name",
				Unique:  false,
				Columns: []*schema.Column{KeysColumns[1]},
			},
			{
				Name:    "key_type",
				Unique:  false,
				Columns: []*schema.Column{KeysColumns[3]},
			},
		},
	}
	// KnowledgesColumns holds the columns for the "knowledges" table.
	KnowledgesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "key", Type: field.TypeString, Unique: true},
		{Name: "category", Type: field.TypeEnum, Enums: []string{"rule", "definition", "preference", "fact", "pattern", "correction"}},
		{Name: "content", Type: field.TypeString, Size: 2147483647},
		{Name: "tags", Type: field.TypeJSON, Nullable: true},
		{Name: "source", Type: field.TypeString, Nullable: true},
		{Name: "use_count", Type: field.TypeInt, Default: 0},
		{Name: "relevance_score", Type: field.TypeFloat64, Default: 1},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "updated_at", Type: field.TypeTime},
	}
	// KnowledgesTable holds the schema information for the "knowledges" table.
	KnowledgesTable = &schema.Table{
		Name:       "knowledges",
		Columns:    KnowledgesColumns,
		PrimaryKey: []*schema.Column{KnowledgesColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "knowledge_category",
				Unique:  false,
				Columns: []*schema.Column{KnowledgesColumns[2]},
			},
		},
	}
	// LearningsColumns holds the columns for the "learnings" table.
	LearningsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "trigger", Type: field.TypeString},
		{Name: "error_pattern", Type: field.TypeString, Nullable: true, Size: 2147483647},
		{Name: "diagnosis", Type: field.TypeString, Nullable: true, Size: 2147483647},
		{Name: "fix", Type: field.TypeString, Nullable: true, Size: 2147483647},
		{Name: "category", Type: field.TypeEnum, Enums: []string{"tool_error", "provider_error", "user_correction", "timeout", "permission", "general"}},
		{Name: "tags", Type: field.TypeJSON, Nullable: true},
		{Name: "occurrence_count", Type: field.TypeInt, Default: 1},
		{Name: "success_count", Type: field.TypeInt, Default: 0},
		{Name: "confidence", Type: field.TypeFloat64, Default: 0.5},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "updated_at", Type: field.TypeTime},
	}
	// LearningsTable holds the schema information for the "learnings" table.
	LearningsTable = &schema.Table{
		Name:       "learnings",
		Columns:    LearningsColumns,
		PrimaryKey: []*schema.Column{LearningsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "learning_category",
				Unique:  false,
				Columns: []*schema.Column{LearningsColumns[5]},
			},
			{
				Name:    "learning_confidence",
				Unique:  false,
				Columns: []*schema.Column{LearningsColumns[9]},
			},
		},
	}
	// MessagesColumns holds the columns for the "messages" table.
	MessagesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "role", Type: field.TypeString},
		{Name: "content", Type: field.TypeString, Size: 2147483647},
		{Name: "timestamp", Type: field.TypeTime},
		{Name: "tool_calls", Type: field.TypeJSON, Nullable: true},
		{Name: "author", Type: field.TypeString, Nullable: true, Default: ""},
		{Name: "session_messages", Type: field.TypeInt, Nullable: true},
	}
	// MessagesTable holds the schema information for the "messages" table.
	MessagesTable = &schema.Table{
		Name:       "messages",
		Columns:    MessagesColumns,
		PrimaryKey: []*schema.Column{MessagesColumns[0]},
		ForeignKeys: []*schema.ForeignKey{
			{
				Symbol:     "messages_sessions_messages",
				Columns:    []*schema.Column{MessagesColumns[6]},
				RefColumns: []*schema.Column{SessionsColumns[0]},
				OnDelete:   schema.SetNull,
			},
		},
	}
	// ObservationsColumns holds the columns for the "observations" table.
	ObservationsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "session_key", Type: field.TypeString},
		{Name: "content", Type: field.TypeString, Size: 2147483647},
		{Name: "token_count", Type: field.TypeInt, Default: 0},
		{Name: "source_start_index", Type: field.TypeInt, Default: 0},
		{Name: "source_end_index", Type: field.TypeInt, Default: 0},
		{Name: "created_at", Type: field.TypeTime},
	}
	// ObservationsTable holds the schema information for the "observations" table.
	ObservationsTable = &schema.Table{
		Name:       "observations",
		Columns:    ObservationsColumns,
		PrimaryKey: []*schema.Column{ObservationsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "observation_session_key",
				Unique:  false,
				Columns: []*schema.Column{ObservationsColumns[1]},
			},
			{
				Name:    "observation_created_at",
				Unique:  false,
				Columns: []*schema.Column{ObservationsColumns[6]},
			},
		},
	}
	// PaymentTxesColumns holds the columns for the "payment_txes" table.
	PaymentTxesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "tx_hash", Type: field.TypeString, Nullable: true},
		{Name: "from_address", Type: field.TypeString},
		{Name: "to_address", Type: field.TypeString},
		{Name: "amount", Type: field.TypeString},
		{Name: "chain_id", Type: field.TypeInt64},
		{Name: "status", Type: field.TypeEnum, Enums: []string{"pending", "submitted", "confirmed", "failed"}, Default: "pending"},
		{Name: "session_key", Type: field.TypeString, Nullable: true},
		{Name: "purpose", Type: field.TypeString, Nullable: true},
		{Name: "x402_url", Type: field.TypeString, Nullable: true},
		{Name: "payment_method", Type: field.TypeEnum, Enums: []string{"direct_transfer", "x402_v2", "p2p_settlement"}, Default: "direct_transfer"},
		{Name: "error_message", Type: field.TypeString, Nullable: true},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "updated_at", Type: field.TypeTime},
	}
	// PaymentTxesTable holds the schema information for the "payment_txes" table.
	PaymentTxesTable = &schema.Table{
		Name:       "payment_txes",
		Columns:    PaymentTxesColumns,
		PrimaryKey: []*schema.Column{PaymentTxesColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "paymenttx_tx_hash",
				Unique:  false,
				Columns: []*schema.Column{PaymentTxesColumns[1]},
			},
			{
				Name:    "paymenttx_from_address",
				Unique:  false,
				Columns: []*schema.Column{PaymentTxesColumns[2]},
			},
			{
				Name:    "paymenttx_status",
				Unique:  false,
				Columns: []*schema.Column{PaymentTxesColumns[6]},
			},
			{
				Name:    "paymenttx_created_at",
				Unique:  false,
				Columns: []*schema.Column{PaymentTxesColumns[12]},
			},
			{
				Name:    "paymenttx_session_key",
				Unique:  false,
				Columns: []*schema.Column{PaymentTxesColumns[7]},
			},
		},
	}
	// PeerReputationsColumns holds the columns for the "peer_reputations" table.
	PeerReputationsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "peer_did", Type: field.TypeString, Unique: true},
		{Name: "successful_exchanges", Type: field.TypeInt, Default: 0},
		{Name: "failed_exchanges", Type: field.TypeInt, Default: 0},
		{Name: "timeout_count", Type: field.TypeInt, Default: 0},
		{Name: "trust_score", Type: field.TypeFloat64, Default: 0},
		{Name: "first_seen", Type: field.TypeTime},
		{Name: "last_interaction", Type: field.TypeTime},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "updated_at", Type: field.TypeTime},
	}
	// PeerReputationsTable holds the schema information for the "peer_reputations" table.
	PeerReputationsTable = &schema.Table{
		Name:       "peer_reputations",
		Columns:    PeerReputationsColumns,
		PrimaryKey: []*schema.Column{PeerReputationsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "peerreputation_trust_score",
				Unique:  false,
				Columns: []*schema.Column{PeerReputationsColumns[5]},
			},
			{
				Name:    "peerreputation_last_interaction",
				Unique:  false,
				Columns: []*schema.Column{PeerReputationsColumns[7]},
			},
		},
	}
	// ReflectionsColumns holds the columns for the "reflections" table.
	ReflectionsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "session_key", Type: field.TypeString},
		{Name: "content", Type: field.TypeString, Size: 2147483647},
		{Name: "token_count", Type: field.TypeInt, Default: 0},
		{Name: "generation", Type: field.TypeInt, Default: 1},
		{Name: "created_at", Type: field.TypeTime},
	}
	// ReflectionsTable holds the schema information for the "reflections" table.
	ReflectionsTable = &schema.Table{
		Name:       "reflections",
		Columns:    ReflectionsColumns,
		PrimaryKey: []*schema.Column{ReflectionsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "reflection_session_key",
				Unique:  false,
				Columns: []*schema.Column{ReflectionsColumns[1]},
			},
			{
				Name:    "reflection_created_at",
				Unique:  false,
				Columns: []*schema.Column{ReflectionsColumns[5]},
			},
		},
	}
	// SecretsColumns holds the columns for the "secrets" table.
	SecretsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "name", Type: field.TypeString, Unique: true},
		{Name: "encrypted_value", Type: field.TypeBytes},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "updated_at", Type: field.TypeTime},
		{Name: "access_count", Type: field.TypeInt, Default: 0},
		{Name: "key_secrets", Type: field.TypeUUID},
	}
	// SecretsTable holds the schema information for the "secrets" table.
	SecretsTable = &schema.Table{
		Name:       "secrets",
		Columns:    SecretsColumns,
		PrimaryKey: []*schema.Column{SecretsColumns[0]},
		ForeignKeys: []*schema.ForeignKey{
			{
				Symbol:     "secrets_keys_secrets",
				Columns:    []*schema.Column{SecretsColumns[6]},
				RefColumns: []*schema.Column{KeysColumns[0]},
				OnDelete:   schema.NoAction,
			},
		},
		Indexes: []*schema.Index{
			{
				Name:    "secret_name",
				Unique:  false,
				Columns: []*schema.Column{SecretsColumns[1]},
			},
			{
				Name:    "secret_created_at",
				Unique:  false,
				Columns: []*schema.Column{SecretsColumns[3]},
			},
		},
	}
	// SessionsColumns holds the columns for the "sessions" table.
	SessionsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeInt, Increment: true},
		{Name: "key", Type: field.TypeString, Unique: true},
		{Name: "agent_id", Type: field.TypeString, Nullable: true},
		{Name: "channel_type", Type: field.TypeString, Nullable: true},
		{Name: "channel_id", Type: field.TypeString, Nullable: true},
		{Name: "model", Type: field.TypeString, Nullable: true},
		{Name: "metadata", Type: field.TypeJSON, Nullable: true},
		{Name: "created_at", Type: field.TypeTime},
		{Name: "updated_at", Type: field.TypeTime},
	}
	// SessionsTable holds the schema information for the "sessions" table.
	SessionsTable = &schema.Table{
		Name:       "sessions",
		Columns:    SessionsColumns,
		PrimaryKey: []*schema.Column{SessionsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "session_updated_at",
				Unique:  false,
				Columns: []*schema.Column{SessionsColumns[8]},
			},
		},
	}
	// TokenUsagesColumns holds the columns for the "token_usages" table.
	TokenUsagesColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "session_key", Type: field.TypeString, Nullable: true},
		{Name: "provider", Type: field.TypeString},
		{Name: "model", Type: field.TypeString},
		{Name: "agent_name", Type: field.TypeString, Nullable: true},
		{Name: "input_tokens", Type: field.TypeInt64, Default: 0},
		{Name: "output_tokens", Type: field.TypeInt64, Default: 0},
		{Name: "total_tokens", Type: field.TypeInt64, Default: 0},
		{Name: "cache_tokens", Type: field.TypeInt64, Default: 0},
		{Name: "timestamp", Type: field.TypeTime},
	}
	// TokenUsagesTable holds the schema information for the "token_usages" table.
	TokenUsagesTable = &schema.Table{
		Name:       "token_usages",
		Columns:    TokenUsagesColumns,
		PrimaryKey: []*schema.Column{TokenUsagesColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "tokenusage_session_key",
				Unique:  false,
				Columns: []*schema.Column{TokenUsagesColumns[1]},
			},
			{
				Name:    "tokenusage_provider",
				Unique:  false,
				Columns: []*schema.Column{TokenUsagesColumns[2]},
			},
			{
				Name:    "tokenusage_timestamp",
				Unique:  false,
				Columns: []*schema.Column{TokenUsagesColumns[9]},
			},
			{
				Name:    "tokenusage_agent_name_timestamp",
				Unique:  false,
				Columns: []*schema.Column{TokenUsagesColumns[4], TokenUsagesColumns[9]},
			},
		},
	}
	// WorkflowRunsColumns holds the columns for the "workflow_runs" table.
	WorkflowRunsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "workflow_name", Type: field.TypeString},
		{Name: "description", Type: field.TypeString, Nullable: true},
		{Name: "status", Type: field.TypeEnum, Enums: []string{"pending", "running", "completed", "failed", "cancelled"}, Default: "pending"},
		{Name: "total_steps", Type: field.TypeInt, Default: 0},
		{Name: "completed_steps", Type: field.TypeInt, Default: 0},
		{Name: "error_message", Type: field.TypeString, Nullable: true},
		{Name: "started_at", Type: field.TypeTime},
		{Name: "completed_at", Type: field.TypeTime, Nullable: true},
	}
	// WorkflowRunsTable holds the schema information for the "workflow_runs" table.
	WorkflowRunsTable = &schema.Table{
		Name:       "workflow_runs",
		Columns:    WorkflowRunsColumns,
		PrimaryKey: []*schema.Column{WorkflowRunsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "workflowrun_status",
				Unique:  false,
				Columns: []*schema.Column{WorkflowRunsColumns[3]},
			},
			{
				Name:    "workflowrun_workflow_name",
				Unique:  false,
				Columns: []*schema.Column{WorkflowRunsColumns[1]},
			},
			{
				Name:    "workflowrun_started_at",
				Unique:  false,
				Columns: []*schema.Column{WorkflowRunsColumns[7]},
			},
		},
	}
	// WorkflowStepRunsColumns holds the columns for the "workflow_step_runs" table.
	WorkflowStepRunsColumns = []*schema.Column{
		{Name: "id", Type: field.TypeUUID},
		{Name: "run_id", Type: field.TypeUUID},
		{Name: "step_id", Type: field.TypeString},
		{Name: "agent", Type: field.TypeString, Nullable: true},
		{Name: "prompt", Type: field.TypeString, Size: 2147483647},
		{Name: "status", Type: field.TypeEnum, Enums: []string{"pending", "running", "completed", "failed", "skipped"}, Default: "pending"},
		{Name: "result", Type: field.TypeString, Nullable: true, Size: 2147483647},
		{Name: "error_message", Type: field.TypeString, Nullable: true},
		{Name: "started_at", Type: field.TypeTime, Nullable: true},
		{Name: "completed_at", Type: field.TypeTime, Nullable: true},
	}
	// WorkflowStepRunsTable holds the schema information for the "workflow_step_runs" table.
	WorkflowStepRunsTable = &schema.Table{
		Name:       "workflow_step_runs",
		Columns:    WorkflowStepRunsColumns,
		PrimaryKey: []*schema.Column{WorkflowStepRunsColumns[0]},
		Indexes: []*schema.Index{
			{
				Name:    "workflowsteprun_run_id",
				Unique:  false,
				Columns: []*schema.Column{WorkflowStepRunsColumns[1]},
			},
			{
				Name:    "workflowsteprun_status",
				Unique:  false,
				Columns: []*schema.Column{WorkflowStepRunsColumns[5]},
			},
			{
				Name:    "workflowsteprun_run_id_step_id",
				Unique:  false,
				Columns: []*schema.Column{WorkflowStepRunsColumns[1], WorkflowStepRunsColumns[2]},
			},
		},
	}
	// Tables holds all the tables in the schema.
	Tables = []*schema.Table{
		AuditLogsTable,
		ConfigProfilesTable,
		CronJobsTable,
		CronJobHistoriesTable,
		EscrowDealsTable,
		ExternalRefsTable,
		InquiriesTable,
		KeysTable,
		KnowledgesTable,
		LearningsTable,
		MessagesTable,
		ObservationsTable,
		PaymentTxesTable,
		PeerReputationsTable,
		ReflectionsTable,
		SecretsTable,
		SessionsTable,
		TokenUsagesTable,
		WorkflowRunsTable,
		WorkflowStepRunsTable,
	}
)

Functions

func Create

func Create(ctx context.Context, s *Schema, tables []*schema.Table, opts ...schema.MigrateOption) error

Create creates all table resources using the given schema driver.

Types

type Schema

type Schema struct {
	// contains filtered or unexported fields
}

Schema is the API for creating, migrating and dropping a schema.

func NewSchema

func NewSchema(drv dialect.Driver) *Schema

NewSchema creates a new schema client.

func (*Schema) Create

func (s *Schema) Create(ctx context.Context, opts ...schema.MigrateOption) error

Create creates all schema resources.

func (*Schema) WriteTo

func (s *Schema) WriteTo(ctx context.Context, w io.Writer, opts ...schema.MigrateOption) error

WriteTo writes the schema changes to w instead of running them against the database.

if err := client.Schema.WriteTo(context.Background(), os.Stdout); err != nil {
	log.Fatal(err)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL