base

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Jul 26, 2025 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AnalyzeSchemasDependencies

func AnalyzeSchemasDependencies(schemas map[string]*schema.Schema) ([]string, error)

AnalyzeSchemasDependencies analyzes dependencies between schemas and returns sorted order

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

type DBLogger struct {
	logger.Logger
}

DBLogger wraps a logger.Logger and adds database-specific logging methods

func NewDBLogger added in v0.6.0

func NewDBLogger(l logger.Logger) *DBLogger

NewDBLogger creates a new database logger

func (*DBLogger) LogCommand added in v0.6.0

func (l *DBLogger) LogCommand(command string, duration time.Duration)

LogCommand logs a command (like MongoDB commands) with duration

func (*DBLogger) LogSQL added in v0.6.0

func (l *DBLogger) LogSQL(sql string, args []any, duration time.Duration)

LogSQL logs SQL query with parameters and 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) Close

func (b *Driver) Close() error

Close closes the database connection

func (*Driver) CreateModel added in v0.6.0

func (b *Driver) CreateModel(ctx context.Context, db types.Database, modelName string) error

CreateModel creates a single model table in the database

func (*Driver) Exec

func (b *Driver) Exec(query string, args ...any) (sql.Result, error)

Exec executes a raw SQL statement

func (*Driver) GetDB

func (b *Driver) GetDB() *sql.DB

GetDB returns the database connection

func (*Driver) GetFieldMapper

func (b *Driver) GetFieldMapper() types.FieldMapper

GetFieldMapper returns the field mapper

func (*Driver) GetLogger added in v0.4.0

func (b *Driver) GetLogger() logger.Logger

GetLogger returns the logger for the driver

func (*Driver) GetModelSchema

func (b *Driver) GetModelSchema(modelName string) (*schema.Schema, error)

GetModelSchema returns schema for a model (alias for GetSchema)

func (*Driver) GetModels

func (b *Driver) GetModels() []string

GetModels returns all registered model names

func (*Driver) GetSchema

func (b *Driver) GetSchema(modelName string) (*schema.Schema, error)

GetSchema returns a registered schema

func (*Driver) LoadSchema

func (b *Driver) LoadSchema(ctx context.Context, schemaContent string) error

LoadSchema loads schema from content string (accumulates schemas)

func (*Driver) LoadSchemaFrom

func (b *Driver) LoadSchemaFrom(ctx context.Context, filename string) error

LoadSchemaFrom loads schema from file (accumulates schemas)

func (*Driver) Ping

func (b *Driver) Ping(ctx context.Context) error

Ping checks if the database connection is alive

func (*Driver) Query

func (b *Driver) Query(query string, args ...any) (*sql.Rows, error)

Query executes a raw SQL query that returns rows

func (*Driver) QueryRow

func (b *Driver) QueryRow(query string, args ...any) *sql.Row

QueryRow executes a raw SQL query that returns a single row

func (*Driver) RegisterSchema

func (b *Driver) RegisterSchema(modelName string, sch *schema.Schema) error

RegisterSchema registers a schema with the database

func (*Driver) ResolveFieldName

func (b *Driver) ResolveFieldName(modelName, fieldName string) (string, error)

ResolveFieldName resolves schema field name to column name

func (*Driver) ResolveFieldNames

func (b *Driver) ResolveFieldNames(modelName string, fieldNames []string) ([]string, error)

ResolveFieldNames resolves multiple schema field names to column names

func (*Driver) ResolveTableName

func (b *Driver) ResolveTableName(modelName string) (string, error)

ResolveTableName resolves model name to table name

func (*Driver) SetDB

func (b *Driver) SetDB(db *sql.DB)

SetDB sets the database connection

func (*Driver) SetLogger added in v0.4.0

func (b *Driver) SetLogger(l logger.Logger)

SetLogger sets the logger for the driver

func (*Driver) SyncSchemas

func (b *Driver) SyncSchemas(ctx context.Context, db types.Database) error

SyncSchemas synchronizes all loaded schemas with the database This must be called on the actual database driver implementation, not the base driver

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

func NewTransactionUtils(tx *sql.Tx, db types.Database, driverType string) *TransactionUtils

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

func (*TransactionUtils) DeleteMany

func (tu *TransactionUtils) DeleteMany(ctx context.Context, modelName string, condition types.Condition) (types.Result, error)

DeleteMany deletes multiple records matching a condition

func (*TransactionUtils) UpdateMany

func (tu *TransactionUtils) UpdateMany(ctx context.Context, modelName string, condition types.Condition, data any) (types.Result, error)

UpdateMany updates multiple records matching a condition

Jump to

Keyboard shortcuts

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