sdata

package
v3.14.1 Latest Latest
Warning

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

Go to latest
Published: Mar 12, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrFromEdgeNotFound   = errors.New("from edge not found")
	ErrToEdgeNotFound     = errors.New("to edge not found")
	ErrPathNotFound       = errors.New("path not found")
	ErrThoughNodeNotFound = errors.New("though node not found")
)

Functions

func GetRelName

func GetRelName(colName string) string

GetRelName returns the relationship name

Types

type DBColumn

type DBColumn struct {
	Comment      string
	ID           int32
	Name         string
	OrigName     string // Original name before normalization (e.g., PascalCase for MSSQL)
	Type         string
	Array        bool
	NotNull      bool
	PrimaryKey   bool
	UniqueKey    bool
	FullText     bool
	FKRecursive  bool
	FKeyDatabase string // Target database for cross-database FKs (empty = same db)
	FKeySchema   string
	FKeyTable    string
	FKeyCol      string
	Blocked      bool
	Table        string
	Schema       string
	Database     string
	Default      string
	Index        bool
	IndexName    string
	FKOnDelete   string
	FKOnUpdate   string

	// Original names before normalization (used to build dialect name maps for MSSQL)
	OrigTable      string
	OrigSchema     string
	OrigFKeyTable  string
	OrigFKeySchema string
	OrigFKeyCol    string
}

DBColumn returns the column as a string

func DiscoverColumns

func DiscoverColumns(db *sql.DB, dbtype string, blockList []string) ([]DBColumn, error)

DiscoverColumns returns the columns of a table

func (DBColumn) String

func (col DBColumn) String() string

String returns a string representation of the DBColumn

type DBFuncParam

type DBFuncParam struct {
	ID    int
	Name  string
	Type  string
	Array bool
}

DBFuncParam holds the database function parameter information

type DBFunction

type DBFunction struct {
	Comment string
	Schema  string
	Name    string
	Type    string
	Agg     bool
	Inputs  []DBFuncParam
	Outputs []DBFuncParam
}

DBFunction holds the database function information

func DiscoverFunctions

func DiscoverFunctions(db *sql.DB, dbtype string, blockList []string) ([]DBFunction, error)

DiscoverFunctions returns the functions of a database

func (*DBFunction) GetInput

func (fn *DBFunction) GetInput(name string) (ret DBFuncParam, err error)

GetInput returns the input of a function

func (DBFunction) String

func (fn DBFunction) String() string

String returns a string representation of the DBFunction

type DBInfo

type DBInfo struct {
	Type    string
	Version int
	Schema  string
	Name    string

	Tables    []DBTable
	Functions []DBFunction
	VTables   []VirtualTable `json:"-"`
	// contains filtered or unexported fields
}

DBInfo holds the database schema information

func GetDBInfo

func GetDBInfo(
	db *sql.DB,
	dbType string,
	blockList []string,
) (*DBInfo, error)

GetDBInfo returns the database schema information

func GetTestDBInfo

func GetTestDBInfo() *DBInfo

func GetTestDBInfoWithDatabase added in v3.2.0

func GetTestDBInfoWithDatabase() *DBInfo

GetTestDBInfoWithDatabase returns a DBInfo with tables that have Database field set for testing multi-database support with @database directive

func NewDBInfo

func NewDBInfo(
	dbType string,
	dbVersion int,
	dbSchema string,
	dbName string,
	cols []DBColumn,
	funcs []DBFunction,
	blockList []string,
) *DBInfo

NewDBInfo returns a new DBInfo object

func (*DBInfo) AddTable

func (di *DBInfo) AddTable(t DBTable)

AddTable adds a table to the DBInfo object

func (*DBInfo) GetColumn

func (di *DBInfo) GetColumn(schema, table, column string) (*DBColumn, error)

GetTable returns a table from the DBInfo object

func (*DBInfo) GetTable

func (di *DBInfo) GetTable(schema, table string) (*DBTable, error)

GetTable returns a table from the DBInfo object

func (*DBInfo) Hash

func (di *DBInfo) Hash() int

Hash returns the hash of the DBInfo object

type DBRel

type DBRel struct {
	Type  RelType
	Left  DBRelLeft
	Right DBRelRight
}

DBRel represents a database relationship

func PathToRel

func PathToRel(p TPath) DBRel

PathToRel converts a table path to a relationship

func (*DBRel) IsCrossDatabase added in v3.2.0

func (r *DBRel) IsCrossDatabase() bool

IsCrossDatabase returns true if this relationship crosses database boundaries. This is used to determine if a join needs to be executed as a database join rather than a SQL join.

func (*DBRel) String

func (re *DBRel) String() string

String returns a string representation of the DBRel

type DBRelLeft

type DBRelLeft struct {
	Ti  DBTable
	Col DBColumn
}

DBRelLeft represents database information

type DBRelRight

type DBRelRight struct {
	VTable string
	Ti     DBTable
	Col    DBColumn
}

DBRelRight represents a database relationship

type DBSchema

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

func GetTestSchema

func GetTestSchema() (*DBSchema, error)

func NewDBSchema

func NewDBSchema(
	info *DBInfo,
	aliases map[string][]string,
) (*DBSchema, error)

NewDBSchema creates a new database schema

func (*DBSchema) DBName

func (s *DBSchema) DBName() string

DBName returns the database name

func (*DBSchema) DBSchema

func (s *DBSchema) DBSchema() string

DBSchema returns the database schema

func (*DBSchema) DBType

func (s *DBSchema) DBType() string

DBType returns the database type

func (*DBSchema) DBVersion

func (s *DBSchema) DBVersion() int

DBVersion returns the database version

func (*DBSchema) Find

func (s *DBSchema) Find(schema, name string) (DBTable, error)

Find returns a table by schema and name

func (*DBSchema) FindPath

func (s *DBSchema) FindPath(from, to, through string) ([]TPath, error)

FindPath returns a path between two tables

func (*DBSchema) GetAliases

func (s *DBSchema) GetAliases() map[string]DBTable

GetAliases returns a map of table aliases

func (*DBSchema) GetFirstDegree

func (s *DBSchema) GetFirstDegree(t DBTable) (items []RelNode, err error)

GetFirstDegree returns the first degree relationships of a table

func (*DBSchema) GetFunctions

func (s *DBSchema) GetFunctions() map[string]DBFunction

GetFunction returns a function from the schema

func (*DBSchema) GetSecondDegree

func (s *DBSchema) GetSecondDegree(t DBTable) (items []RelNode, err error)

GetSecondDegree returns the second degree relationships of a table

func (*DBSchema) GetTables

func (s *DBSchema) GetTables() []DBTable

GetTables returns a table from the schema

func (*DBSchema) IsAlias

func (s *DBSchema) IsAlias(name string) bool

IsAlias checks if a table is an alias

func (*DBSchema) PrintEdgeInfo

func (s *DBSchema) PrintEdgeInfo(e edgeInfo)

PrintEdgeInfo prints edge info

func (*DBSchema) PrintLines

func (s *DBSchema) PrintLines(lines []util.Edge)

PrintLines prints the graph lines

type DBTable

type DBTable struct {
	Comment    string
	Schema     string
	Name       string
	OrigName   string // Original name before normalization (e.g., PascalCase for MSSQL)
	OrigSchema string // Original schema before normalization
	Type       string
	// Database is the name of the database this table belongs to (for multi-database support).
	// Empty string means the default database.
	Database     string
	Columns      []DBColumn
	PrimaryCol   DBColumn
	SecondaryCol DBColumn
	FullText     []DBColumn
	Blocked      bool
	Func         DBFunction
	// contains filtered or unexported fields
}

DBTable holds the database table information

func NewDBTable

func NewDBTable(schema, name, _type string, cols []DBColumn) DBTable

NewDBTable returns a new DBTable object

func (*DBTable) ColumnExists

func (ti *DBTable) ColumnExists(name string) (DBColumn, bool)

ColumnExists returns true if a column exists in a table

func (*DBTable) GetColumn

func (ti *DBTable) GetColumn(name string) (DBColumn, error)

GetColumn returns a column from a table

func (*DBTable) String

func (ti *DBTable) String() string

String returns a string representation of the DBTable

type RelNode

type RelNode struct {
	Name  string
	Type  RelType
	Table DBTable
}

RelNode represents a relationship node

type RelType

type RelType int
const (
	RelNone RelType = iota
	RelOneToOne
	RelOneToMany
	RelPolymorphic
	RelRecursive
	RelEmbedded
	RelRemote
	RelSkip
	// RelDatabaseJoin represents a cross-database relationship (multi-database support).
	// Similar to RelRemote but for in-process database joins rather than HTTP calls.
	RelDatabaseJoin
)

func (RelType) String

func (i RelType) String() string

type TEdge

type TEdge struct {
	From, To, Weight int32

	Type   RelType
	LT, RT DBTable
	L, R   DBColumn
	CName  string
	// contains filtered or unexported fields
}

TEdge represents a table edge for the graph

type TPath

type TPath struct {
	Rel RelType
	LT  DBTable
	LC  DBColumn
	RT  DBTable
	RC  DBColumn
}

TPath represents a table path

func (*TPath) String

func (tp *TPath) String() string

String returns a string representation of a table path

type VirtualTable

type VirtualTable struct {
	Name       string
	IDColumn   string
	TypeColumn string
	FKeyColumn string
}

VirtualTable holds the virtual table information

Jump to

Keyboard shortcuts

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