Documentation
¶
Overview ¶
Package prisma provides Prisma ORM integration for pgsquash. It handles Prisma-generated migrations, schema.prisma patterns, and migration metadata.
Index ¶
- type PrismaConfig
- type PrismaPlugin
- func (pp *PrismaPlugin) Detect(migrations []*types.Migration) bool
- func (pp *PrismaPlugin) DetectPatterns(sql string) []plugins.Pattern
- func (pp *PrismaPlugin) EnrichStatement(ctx context.Context, stmt *types.Statement) error
- func (pp *PrismaPlugin) ExtractPrismaComment(sql string) (action string, target string, found bool)
- func (pp *PrismaPlugin) FixFunctionVolatility(ctx context.Context, functionSQL string) (string, error)
- func (pp *PrismaPlugin) GeneratePrismaMetadata(tableName string, action string) string
- func (pp *PrismaPlugin) GetConflictingPlugins() []string
- func (pp *PrismaPlugin) GetConsolidationRules() []plugins.ConsolidationRule
- func (pp *PrismaPlugin) GetRequiredExtensions() []string
- func (pp *PrismaPlugin) Initialize(ctx context.Context, config any) error
- func (pp *PrismaPlugin) InjectCompatibilityLayer(ctx context.Context) string
- func (pp *PrismaPlugin) IsPrismaGeneratedSQL(sql string) bool
- func (pp *PrismaPlugin) ShouldPreserve(stmt *types.Statement) bool
- func (pp *PrismaPlugin) TransformSQL(ctx context.Context, sql string) (string, error)
- func (pp *PrismaPlugin) ValidateSchema(ctx context.Context, db *sql.DB) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type PrismaConfig ¶
type PrismaConfig struct {
Enabled bool `json:"enabled"`
PreserveMigrationTable bool `json:"preserve_migration_table"` // Preserve _prisma_migrations
ShadowDatabase bool `json:"shadow_database"` // Handle shadow database patterns
OptimizeIndices bool `json:"optimize_indices"` // Optimize Prisma-generated indices
}
PrismaConfig holds Prisma-specific configuration
type PrismaPlugin ¶
type PrismaPlugin struct {
*plugins.BasePlugin
// contains filtered or unexported fields
}
PrismaPlugin implements Prisma ORM integration
func NewPrismaPlugin ¶
func NewPrismaPlugin() *PrismaPlugin
NewPrismaPlugin creates a new Prisma plugin instance
func (*PrismaPlugin) Detect ¶
func (pp *PrismaPlugin) Detect(migrations []*types.Migration) bool
Detect checks if migrations contain Prisma patterns Detection patterns:
- _prisma_migrations table (most reliable)
- Prisma-style timestamp directory structure (migrations/20210313140442_init/)
- Prisma schema comments (-- CreateTable, -- CreateIndex, etc.)
- Prisma-specific naming patterns (autoincrement vs SERIAL preference)
func (*PrismaPlugin) DetectPatterns ¶
func (pp *PrismaPlugin) DetectPatterns(sql string) []plugins.Pattern
DetectPatterns analyzes SQL for Prisma-specific patterns
func (*PrismaPlugin) EnrichStatement ¶
EnrichStatement adds Prisma-specific metadata to parsed statements
func (*PrismaPlugin) ExtractPrismaComment ¶
func (pp *PrismaPlugin) ExtractPrismaComment(sql string) (action string, target string, found bool)
ExtractPrismaComment extracts Prisma action from migration comment
func (*PrismaPlugin) FixFunctionVolatility ¶
func (pp *PrismaPlugin) FixFunctionVolatility(ctx context.Context, functionSQL string) (string, error)
FixFunctionVolatility adds volatility markers to Prisma-generated functions Prisma rarely generates custom functions, but if it does, they should be marked
func (*PrismaPlugin) GeneratePrismaMetadata ¶
func (pp *PrismaPlugin) GeneratePrismaMetadata(tableName string, action string) string
GeneratePrismaMetadata creates metadata for Prisma migrations
func (*PrismaPlugin) GetConflictingPlugins ¶
func (pp *PrismaPlugin) GetConflictingPlugins() []string
GetConflictingPlugins returns plugins that conflict with Prisma
func (*PrismaPlugin) GetConsolidationRules ¶
func (pp *PrismaPlugin) GetConsolidationRules() []plugins.ConsolidationRule
GetConsolidationRules returns Prisma-specific consolidation rules
func (*PrismaPlugin) GetRequiredExtensions ¶
func (pp *PrismaPlugin) GetRequiredExtensions() []string
GetRequiredExtensions returns PostgreSQL extensions required by Prisma
func (*PrismaPlugin) Initialize ¶
func (pp *PrismaPlugin) Initialize(ctx context.Context, config any) error
Initialize configures the Prisma plugin
func (*PrismaPlugin) InjectCompatibilityLayer ¶
func (pp *PrismaPlugin) InjectCompatibilityLayer(ctx context.Context) string
InjectCompatibilityLayer returns SQL for Prisma compatibility during validation
func (*PrismaPlugin) IsPrismaGeneratedSQL ¶
func (pp *PrismaPlugin) IsPrismaGeneratedSQL(sql string) bool
IsPrismaGeneratedSQL checks if SQL appears to be Prisma-generated
func (*PrismaPlugin) ShouldPreserve ¶
func (pp *PrismaPlugin) ShouldPreserve(stmt *types.Statement) bool
ShouldPreserve determines if a statement should never be consolidated
func (*PrismaPlugin) TransformSQL ¶
TransformSQL performs Prisma-specific SQL transformations
func (*PrismaPlugin) ValidateSchema ¶
ValidateSchema performs Prisma-specific schema validation