models

package
v0.1.0 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	RelationshipOneToOne   = "one_to_one"
	RelationshipOneToMany  = "one_to_many"
	RelationshipManyToMany = "many_to_many"
)

Relationship types

Variables

This section is empty.

Functions

This section is empty.

Types

type AddColumnRequest

type AddColumnRequest struct {
	Column ColumnDefinition `json:"column" binding:"required"`
}

type AggregateFunction

type AggregateFunction struct {
	Function string `json:"function"` // COUNT, SUM, AVG, MIN, MAX
	Column   string `json:"column"`
	Alias    string `json:"alias,omitempty"`
}

type AlterTableRequest

type AlterTableRequest struct {
	Action string      `json:"action" binding:"required"` // "drop_column", "modify_column", "rename_column"
	Data   interface{} `json:"data" binding:"required"`
}

type BatchRelationshipRequest

type BatchRelationshipRequest struct {
	Operations []RelationshipOperation `json:"operations" binding:"required"`
}

Batch relationship operations

type CascadeOperation

type CascadeOperation struct {
	Table     string      `json:"table"`
	Operation string      `json:"operation"` // "DELETE", "UPDATE", "SET_NULL"
	RecordID  interface{} `json:"record_id"`
	Success   bool        `json:"success"`
	Error     string      `json:"error,omitempty"`
}

Cascade operation tracking

type CascadeResult

type CascadeResult struct {
	Success    bool               `json:"success"`
	Operations []CascadeOperation `json:"operations"`
	Message    string             `json:"message"`
}

type Column

type Column struct {
	Name         string  `db:"column_name"`
	DataType     string  `db:"data_type"`
	IsNullable   string  `db:"is_nullable"`
	DefaultValue *string `db:"column_default"`
	MaxLength    *int    `db:"character_maximum_length"`
	Position     int     `db:"ordinal_position"`
	IsPrimaryKey bool    `json:"is_primary_key"`
	NotNull      bool    `json:"not_null"`
	Ordinal      int     `json:"ordinal"`
}

type ColumnDefinition

type ColumnDefinition struct {
	Name         string  `json:"name" binding:"required"`
	DataType     string  `json:"data_type" binding:"required"`
	NotNull      bool    `json:"not_null"`
	Unique       bool    `json:"unique"`
	DefaultValue *string `json:"default_value,omitempty"`
	Check        *string `json:"check,omitempty"`
}

type ComplexFilter

type ComplexFilter struct {
	Filters []QueryFilter   `json:"filters"`
	Groups  []ComplexFilter `json:"groups,omitempty"`
	Logic   string          `json:"logic"` // "AND" or "OR"
}

type CreateJoinTableRequest

type CreateJoinTableRequest struct {
	Name              string             `json:"name,omitempty"`
	SourceJoinColumn  string             `json:"source_join_column,omitempty"`
	TargetJoinColumn  string             `json:"target_join_column,omitempty"`
	AdditionalColumns []ColumnDefinition `json:"additional_columns,omitempty"`
	Indexes           []IndexDefinition  `json:"indexes,omitempty"`
}

type CreateRelationshipRequest

type CreateRelationshipRequest struct {
	Name        string                  `json:"name" binding:"required"`
	Type        string                  `json:"type" binding:"required"`
	SourceTable string                  `json:"source_table" binding:"required"`
	TargetTable string                  `json:"target_table" binding:"required"`
	Config      RelationshipConfig      `json:"config"`
	JoinTable   *CreateJoinTableRequest `json:"join_table,omitempty"`
}

Relationship request models

type CreateTableRequest

type CreateTableRequest struct {
	Name        string             `json:"name" binding:"required"`
	Columns     []ColumnDefinition `json:"columns" binding:"required"`
	PrimaryKey  []string           `json:"primary_key,omitempty"`
	ForeignKeys []ForeignKeyDef    `json:"foreign_keys,omitempty"`
	Indexes     []IndexDefinition  `json:"indexes,omitempty"`
}

DDL Models

type DropColumnRequest

type DropColumnRequest struct {
	ColumnName string `json:"column_name" binding:"required"`
	Cascade    bool   `json:"cascade"`
}

type ForeignKey

type ForeignKey struct {
	ColumnName           string   `db:"column_name"`
	ReferencedTableName  string   `db:"referenced_table_name"`
	ReferencedColumnName string   `db:"referenced_column_name"`
	ConstraintName       string   `db:"constraint_name"`
	Columns              []string `json:"columns"`
	ReferencedTable      string   `json:"referenced_table"`
	ReferencedColumns    []string `json:"referenced_columns"`
	OnDelete             string   `json:"on_delete,omitempty"`
	OnUpdate             string   `json:"on_update,omitempty"`
}

type ForeignKeyDef

type ForeignKeyDef struct {
	Name              string   `json:"name,omitempty"`
	Columns           []string `json:"columns" binding:"required"`
	ReferencedTable   string   `json:"referenced_table" binding:"required"`
	ReferencedColumns []string `json:"referenced_columns" binding:"required"`
	OnDelete          string   `json:"on_delete,omitempty"` // CASCADE, SET NULL, RESTRICT
	OnUpdate          string   `json:"on_update,omitempty"`
}

type FullTextSearch

type FullTextSearch struct {
	Query   string   `json:"query"`
	Columns []string `json:"columns"`
	Type    string   `json:"type"` // "simple", "phrase", "websearch"
}

type IncludeDefinition

type IncludeDefinition struct {
	Relationship string              `json:"relationship" binding:"required"`
	Alias        string              `json:"alias,omitempty"`
	Select       []string            `json:"select,omitempty"`
	Filters      []QueryFilter       `json:"filters,omitempty"`
	OrderBy      []string            `json:"order_by,omitempty"`
	Limit        *int                `json:"limit,omitempty"`
	Include      []IncludeDefinition `json:"include,omitempty"` // Nested includes
}

type IndexDefinition

type IndexDefinition struct {
	Name    string   `json:"name,omitempty"`
	Columns []string `json:"columns" binding:"required"`
	Unique  bool     `json:"unique"`
	Type    string   `json:"type,omitempty"` // btree, hash, gin, gist
}

type JoinClause

type JoinClause struct {
	Table string `json:"table"`
	Type  string `json:"type"` // "INNER", "LEFT", "RIGHT", "FULL"
	On    string `json:"on"`   // join condition
	Alias string `json:"alias,omitempty"`
}

type JoinTableInfo

type JoinTableInfo struct {
	Name              string   `json:"name"`
	SourceTable       string   `json:"source_table"`
	TargetTable       string   `json:"target_table"`
	SourceColumn      string   `json:"source_column"`
	TargetColumn      string   `json:"target_column"`
	AdditionalColumns []Column `json:"additional_columns,omitempty"`
	RelationshipName  string   `json:"relationship_name"`
}

Join table metadata

type ModifyColumnRequest

type ModifyColumnRequest struct {
	ColumnName  string  `json:"column_name" binding:"required"`
	NewDataType string  `json:"new_data_type,omitempty"`
	SetNotNull  *bool   `json:"set_not_null,omitempty"`
	SetDefault  *string `json:"set_default,omitempty"`
	DropDefault bool    `json:"drop_default"`
}

type NestedQueryParams

type NestedQueryParams struct {
	Include []IncludeDefinition `json:"include,omitempty"`
	QueryParams
}

Nested query structures

type QueryFilter

type QueryFilter struct {
	Column   string      `json:"column"`
	Operator string      `json:"operator"`
	Value    interface{} `json:"value"`
	Logic    string      `json:"logic,omitempty"` // "AND" or "OR"
}

Enhanced query models

type QueryParams

type QueryParams struct {
	Select     []string            `json:"select,omitempty"`
	Filters    []QueryFilter       `json:"filters,omitempty"`
	Complex    *ComplexFilter      `json:"complex_filter,omitempty"`
	Joins      []JoinClause        `json:"joins,omitempty"`
	Aggregates []AggregateFunction `json:"aggregates,omitempty"`
	GroupBy    []string            `json:"group_by,omitempty"`
	Having     []QueryFilter       `json:"having,omitempty"`
	OrderBy    []string            `json:"order_by,omitempty"`
	Limit      *int                `json:"limit,omitempty"`
	Offset     *int                `json:"offset,omitempty"`
	Range      *RangeQuery         `json:"range,omitempty"`
	FullText   *FullTextSearch     `json:"full_text,omitempty"`
}

type RangeQuery

type RangeQuery struct {
	Column string      `json:"column"`
	From   interface{} `json:"from"`
	To     interface{} `json:"to"`
}

type RelationshipAnalysis

type RelationshipAnalysis struct {
	TableName     string                `json:"table_name"`
	Relationships []RelationshipSummary `json:"relationships"`
	DependsOn     []string              `json:"depends_on"`
	DependedBy    []string              `json:"depended_by"`
}

Relationship analysis models

type RelationshipConfig

type RelationshipConfig struct {
	JunctionTable    string `json:"junction_table,omitempty"`
	SourceColumn     string `json:"source_column,omitempty"`
	TargetColumn     string `json:"target_column,omitempty"`
	OnDelete         string `json:"on_delete,omitempty"`
	OnUpdate         string `json:"on_update,omitempty"`
	CreateForeignKey bool   `json:"create_foreign_key"`
}

type RelationshipDataRequest

type RelationshipDataRequest struct {
	SourceID  interface{}            `json:"source_id" binding:"required"`
	TargetIDs []interface{}          `json:"target_ids,omitempty"`
	TargetID  interface{}            `json:"target_id,omitempty"`
	Data      map[string]interface{} `json:"data,omitempty"` // For additional columns in join table
}

Relationship data operations

type RelationshipDataResponse

type RelationshipDataResponse struct {
	Success   bool                     `json:"success"`
	Message   string                   `json:"message"`
	Relations []map[string]interface{} `json:"relations,omitempty"`
}

type RelationshipDefinition

type RelationshipDefinition struct {
	Name             string  `json:"name" db:"name"`
	Type             string  `json:"type" db:"type"`
	SourceTable      string  `json:"source_table" db:"source_table"`
	SourceColumn     string  `json:"source_column" db:"source_column"`
	TargetTable      string  `json:"target_table" db:"target_table"`
	TargetColumn     string  `json:"target_column" db:"target_column"`
	JoinTable        *string `json:"join_table,omitempty" db:"join_table"`
	SourceJoinColumn *string `json:"source_join_column,omitempty" db:"source_join_column"`
	TargetJoinColumn *string `json:"target_join_column,omitempty" db:"target_join_column"`
	OnDelete         string  `json:"on_delete" db:"on_delete"`
	OnUpdate         string  `json:"on_update" db:"on_update"`
}

RelationshipDefinition defines the structure of a relationship

type RelationshipOperation

type RelationshipOperation struct {
	Operation    string                  `json:"operation" binding:"required"` // "create", "update", "delete"
	Relationship string                  `json:"relationship,omitempty"`
	Data         RelationshipDataRequest `json:"data,omitempty"`
}

type RelationshipSummary

type RelationshipSummary struct {
	Name         string `json:"name"`
	Type         string `json:"type"`
	RelatedTable string `json:"related_table"`
	IsSource     bool   `json:"is_source"`
}

type RelationshipValidationError

type RelationshipValidationError struct {
	Field   string `json:"field"`
	Message string `json:"message"`
}

Relationship validation errors

type RelationshipValidationResponse

type RelationshipValidationResponse struct {
	Valid  bool                          `json:"valid"`
	Errors []RelationshipValidationError `json:"errors,omitempty"`
}

type RenameColumnRequest

type RenameColumnRequest struct {
	OldName string `json:"old_name" binding:"required"`
	NewName string `json:"new_name" binding:"required"`
}

type Table

type Table struct {
	Name        string       `db:"table_name"`
	Schema      string       `db:"table_schema"`
	Type        string       `db:"table_type"`
	Columns     []Column     `json:"columns,omitempty"`
	PrimaryKeys []string     `json:"primary_keys,omitempty"`
	ForeignKeys []ForeignKey `json:"foreign_keys,omitempty"`
}

type UpdateRelationshipRequest

type UpdateRelationshipRequest struct {
	Name     *string             `json:"name,omitempty"`
	OnDelete *string             `json:"on_delete,omitempty"`
	OnUpdate *string             `json:"on_update,omitempty"`
	Config   *RelationshipConfig `json:"config,omitempty"`
}

Jump to

Keyboard shortcuts

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