Documentation
¶
Index ¶
- func AnalyzeSchemasDependencies(schemas map[string]*schema.Schema) ([]string, error)
- type BaseMigrator
- func (b *BaseMigrator) ApplyMigration(sql string) error
- func (b *BaseMigrator) CompareSchema(existingTable *types.TableInfo, desiredSchema *schema.Schema) (*types.MigrationPlan, error)
- func (b *BaseMigrator) EnsureSchemaForRegisteredSchemas(schemas map[string]any, createTableFunc func(*schema.Schema) error) error
- func (b *BaseMigrator) GenerateAddColumnSQL(tableName string, field any) (string, error)
- func (b *BaseMigrator) GenerateCreateIndexSQL(tableName, indexName string, columns []string, unique bool) string
- func (b *BaseMigrator) GenerateCreateTableSQL(s *schema.Schema) (string, error)
- func (b *BaseMigrator) GenerateDropColumnSQL(tableName, columnName string) ([]string, error)
- func (b *BaseMigrator) GenerateDropIndexSQL(indexName string) string
- func (b *BaseMigrator) GenerateDropTableSQL(tableName string) string
- func (b *BaseMigrator) GenerateMigrationSQL(plan *types.MigrationPlan) ([]string, error)
- func (b *BaseMigrator) GenerateModifyColumnSQL(change types.ColumnChange) ([]string, error)
- func (b *BaseMigrator) GetDatabaseType() string
- func (b *BaseMigrator) GetTableInfo(tableName string) (*types.TableInfo, error)
- func (b *BaseMigrator) GetTables() ([]string, error)
- type DBLogger
- type Driver
- func (b *Driver) Close() error
- func (b *Driver) CreateModel(ctx context.Context, db types.Database, modelName string) error
- func (b *Driver) Exec(query string, args ...any) (sql.Result, error)
- func (b *Driver) GetDB() *sql.DB
- func (b *Driver) GetFieldMapper() types.FieldMapper
- func (b *Driver) GetLogger() logger.Logger
- func (b *Driver) GetModelSchema(modelName string) (*schema.Schema, error)
- func (b *Driver) GetModels() []string
- func (b *Driver) GetSchema(modelName string) (*schema.Schema, error)
- func (b *Driver) LoadSchema(ctx context.Context, schemaContent string) error
- func (b *Driver) LoadSchemaFrom(ctx context.Context, filename string) error
- func (b *Driver) Ping(ctx context.Context) error
- func (b *Driver) Query(query string, args ...any) (*sql.Rows, error)
- func (b *Driver) QueryRow(query string, args ...any) *sql.Row
- func (b *Driver) RegisterSchema(modelName string, sch *schema.Schema) error
- func (b *Driver) ResolveFieldName(modelName, fieldName string) (string, error)
- func (b *Driver) ResolveFieldNames(modelName string, fieldNames []string) ([]string, error)
- func (b *Driver) ResolveTableName(modelName string) (string, error)
- func (b *Driver) SetDB(db *sql.DB)
- func (b *Driver) SetLogger(l logger.Logger)
- func (b *Driver) SyncSchemas(ctx context.Context, db types.Database) error
- type SchemaNode
- type TransactionUtils
- func (tu *TransactionUtils) CreateMany(ctx context.Context, modelName string, data []any) (types.Result, error)
- func (tu *TransactionUtils) DeleteMany(ctx context.Context, modelName string, condition types.Condition) (types.Result, error)
- func (tu *TransactionUtils) UpdateMany(ctx context.Context, modelName string, condition types.Condition, data any) (types.Result, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BaseMigrator ¶
type BaseMigrator struct {
// contains filtered or unexported fields
}
BaseMigrator provides common migration functionality that all database drivers can use
func NewBaseMigrator ¶
func NewBaseMigrator(specific types.DatabaseSpecificMigrator) *BaseMigrator
NewBaseMigrator creates a new base migrator with database-specific implementation
func (*BaseMigrator) ApplyMigration ¶
func (b *BaseMigrator) ApplyMigration(sql string) error
ApplyMigration executes a migration SQL statement
func (*BaseMigrator) CompareSchema ¶
func (b *BaseMigrator) CompareSchema(existingTable *types.TableInfo, desiredSchema *schema.Schema) (*types.MigrationPlan, error)
CompareSchema compares existing table with desired schema and creates migration plan This is the shared logic that works for all databases
func (*BaseMigrator) EnsureSchemaForRegisteredSchemas ¶
func (b *BaseMigrator) EnsureSchemaForRegisteredSchemas(schemas map[string]any, createTableFunc func(*schema.Schema) error) error
EnsureSchemaForRegisteredSchemas provides common EnsureSchema logic for all drivers
func (*BaseMigrator) GenerateAddColumnSQL ¶
func (b *BaseMigrator) GenerateAddColumnSQL(tableName string, field any) (string, error)
GenerateAddColumnSQL generates ALTER TABLE ADD COLUMN SQL
func (*BaseMigrator) GenerateCreateIndexSQL ¶
func (b *BaseMigrator) GenerateCreateIndexSQL(tableName, indexName string, columns []string, unique bool) string
GenerateCreateIndexSQL generates CREATE INDEX SQL
func (*BaseMigrator) GenerateCreateTableSQL ¶
func (b *BaseMigrator) GenerateCreateTableSQL(s *schema.Schema) (string, error)
GenerateCreateTableSQL generates CREATE TABLE SQL
func (*BaseMigrator) GenerateDropColumnSQL ¶
func (b *BaseMigrator) GenerateDropColumnSQL(tableName, columnName string) ([]string, error)
GenerateDropColumnSQL generates ALTER TABLE DROP COLUMN SQL
func (*BaseMigrator) GenerateDropIndexSQL ¶
func (b *BaseMigrator) GenerateDropIndexSQL(indexName string) string
GenerateDropIndexSQL generates DROP INDEX SQL
func (*BaseMigrator) GenerateDropTableSQL ¶
func (b *BaseMigrator) GenerateDropTableSQL(tableName string) string
GenerateDropTableSQL generates DROP TABLE SQL
func (*BaseMigrator) GenerateMigrationSQL ¶
func (b *BaseMigrator) GenerateMigrationSQL(plan *types.MigrationPlan) ([]string, error)
GenerateMigrationSQL generates SQL statements for a migration plan This provides a common implementation that databases can override if needed
func (*BaseMigrator) GenerateModifyColumnSQL ¶
func (b *BaseMigrator) GenerateModifyColumnSQL(change types.ColumnChange) ([]string, error)
GenerateModifyColumnSQL generates ALTER TABLE MODIFY COLUMN SQL
func (*BaseMigrator) GetDatabaseType ¶
func (b *BaseMigrator) GetDatabaseType() string
GetDatabaseType returns the database type
func (*BaseMigrator) GetTableInfo ¶
func (b *BaseMigrator) GetTableInfo(tableName string) (*types.TableInfo, error)
GetTableInfo returns detailed information about a table
func (*BaseMigrator) GetTables ¶
func (b *BaseMigrator) GetTables() ([]string, error)
GetTables returns all tables in the database
type DBLogger ¶ added in v0.6.0
DBLogger wraps a logger.Logger and adds database-specific logging methods
func NewDBLogger ¶ added in v0.6.0
NewDBLogger creates a new database logger
func (*DBLogger) LogCommand ¶ added in v0.6.0
LogCommand logs a command (like MongoDB commands) with duration
type Driver ¶
type Driver struct {
DB *sql.DB
URI string
DriverType types.DriverType
FieldMapper types.FieldMapper
Schemas map[string]*schema.Schema
SchemasMu sync.RWMutex
Logger logger.Logger
// contains filtered or unexported fields
}
Driver provides common functionality for all database drivers
func NewDriver ¶
func NewDriver(uri string, driverType types.DriverType) *Driver
NewDriver creates a new base driver instance
func (*Driver) CreateModel ¶ added in v0.6.0
CreateModel creates a single model table in the database
func (*Driver) GetFieldMapper ¶
func (b *Driver) GetFieldMapper() types.FieldMapper
GetFieldMapper returns the field mapper
func (*Driver) GetModelSchema ¶
GetModelSchema returns schema for a model (alias for GetSchema)
func (*Driver) LoadSchema ¶
LoadSchema loads schema from content string (accumulates schemas)
func (*Driver) LoadSchemaFrom ¶
LoadSchemaFrom loads schema from file (accumulates schemas)
func (*Driver) RegisterSchema ¶
RegisterSchema registers a schema with the database
func (*Driver) ResolveFieldName ¶
ResolveFieldName resolves schema field name to column name
func (*Driver) ResolveFieldNames ¶
ResolveFieldNames resolves multiple schema field names to column names
func (*Driver) ResolveTableName ¶
ResolveTableName resolves model name to table name
type SchemaNode ¶
type SchemaNode struct {
Name string
Schema *schema.Schema
Dependencies []string
Visited bool
InStack bool
}
SchemaNode represents a schema in the dependency graph
type TransactionUtils ¶
type TransactionUtils struct {
// contains filtered or unexported fields
}
TransactionUtils provides shared utilities for batch operations
func NewTransactionUtils ¶
NewTransactionUtils creates a new TransactionUtils instance
func (*TransactionUtils) CreateMany ¶
func (tu *TransactionUtils) CreateMany(ctx context.Context, modelName string, data []any) (types.Result, error)
CreateMany creates multiple records in a batch