MCPcopy Create free account
hub / github.com/bytebase/bytebase / buildTableEntry

Function buildTableEntry

backend/api/mcp/tool_schema.go:578–638  ·  view source on GitHub ↗

buildTableEntry converts a single tableMetadata into the response shape at the requested detail level.

(t *tableMetadata, include string)

Source from the content-addressed store, hash-verified

576// buildTableEntry converts a single tableMetadata into the response shape at the
577// requested detail level.
578func buildTableEntry(t *tableMetadata, include string) TableEntry {
579 rowCount, _ := t.RowCount.Int64()
580 entry := TableEntry{
581 Name: t.Name,
582 RowCount: rowCount,
583 Comment: t.Comment,
584 }
585
586 if include == schemaIncludeSummary {
587 entry.ColumnCount = len(t.Columns)
588 return entry
589 }
590
591 // Derive primary-key columns from indexes (ColumnMetadata has no primary_key field).
592 pkColumns := primaryKeyColumns(t.Indexes)
593
594 entry.Columns = make([]ColumnEntry, 0, len(t.Columns))
595 for _, c := range t.Columns {
596 col := ColumnEntry{
597 Name: c.Name,
598 Type: c.Type,
599 Nullable: c.Nullable,
600 PrimaryKey: pkColumns[c.Name],
601 }
602 if include == schemaIncludeDetails {
603 col.Default = c.Default
604 col.Comment = c.Comment
605 }
606 entry.Columns = append(entry.Columns, col)
607 }
608
609 if include == schemaIncludeDetails {
610 entry.Indexes = make([]IndexEntry, 0, len(t.Indexes))
611 for _, idx := range t.Indexes {
612 entry.Indexes = append(entry.Indexes, IndexEntry{
613 Name: idx.Name,
614 Type: idx.Type,
615 Unique: idx.Unique,
616 Columns: append([]string{}, idx.Expressions...),
617 })
618 }
619 slices.SortStableFunc(entry.Indexes, func(a, b IndexEntry) int {
620 return strings.Compare(a.Name, b.Name)
621 })
622
623 entry.ForeignKeys = make([]FKEntry, 0, len(t.ForeignKeys))
624 for _, fk := range t.ForeignKeys {
625 entry.ForeignKeys = append(entry.ForeignKeys, FKEntry{
626 Name: fk.Name,
627 Columns: append([]string{}, fk.Columns...),
628 ReferencedTable: fk.ReferencedTable,
629 ReferencedColumns: append([]string{}, fk.ReferencedColumns...),
630 })
631 }
632 slices.SortStableFunc(entry.ForeignKeys, func(a, b FKEntry) int {
633 return strings.Compare(a.Name, b.Name)
634 })
635 }

Callers 2

renderTableResultMethod · 0.85
transformSchemasFunction · 0.85

Calls 1

primaryKeyColumnsFunction · 0.70

Tested by

no test coverage detected