Compare commits

..

No commits in common. "main" and "v1.0.2024" have entirely different histories.

1 changed files with 24 additions and 23 deletions

View File

@ -52,16 +52,14 @@ func (m *Migration) CreateTable(ctx context.Context, table string, columns map[s
var primaryKeys []string var primaryKeys []string
for name, def := range columns { for name, def := range columns {
colDef := m.buildColumnDefinition(name, def) colDef := m.buildColumnDefinition(name, def)
// Only add to primaryKeys if it's not an auto-increment column if def.PrimaryKey {
// (auto-increment columns already have PRIMARY KEY in their definition)
if def.PrimaryKey && !def.AutoIncrement {
primaryKeys = append(primaryKeys, database.QuoteIdentifier(name)) primaryKeys = append(primaryKeys, database.QuoteIdentifier(name))
} }
colDefs = append(colDefs, " "+colDef) colDefs = append(colDefs, " "+colDef)
} }
// Add composite primary key constraint if needed (for non-auto-increment keys) // Add primary key constraint if needed
if len(primaryKeys) > 1 { if len(primaryKeys) > 0 {
colDefs = append(colDefs, fmt.Sprintf(" PRIMARY KEY (%s)", strings.Join(primaryKeys, ", "))) colDefs = append(colDefs, fmt.Sprintf(" PRIMARY KEY (%s)", strings.Join(primaryKeys, ", ")))
} }
@ -76,16 +74,18 @@ func (m *Migration) buildColumnDefinition(name string, def *database.ColumnDefin
var parts []string var parts []string
parts = append(parts, database.QuoteIdentifier(name)) parts = append(parts, database.QuoteIdentifier(name))
// Handle SQLite-specific types for auto-increment primary key // Handle SQLite-specific types
if def.PrimaryKey && def.AutoIncrement { dbType := def.Type
// SQLite requires INTEGER type for AUTOINCREMENT if def.AutoIncrement && def.PrimaryKey {
parts = append(parts, "INTEGER PRIMARY KEY AUTOINCREMENT") if dbType == "INT" || dbType == "INTEGER" {
return strings.Join(parts, " ") dbType = "INTEGER"
} }
}
parts = append(parts, dbType)
// Regular column definition if def.PrimaryKey && def.AutoIncrement {
parts = append(parts, def.Type) parts = append(parts, "PRIMARY KEY AUTOINCREMENT")
} else {
if !def.Null { if !def.Null {
parts = append(parts, "NOT NULL") parts = append(parts, "NOT NULL")
} }
@ -98,6 +98,7 @@ func (m *Migration) buildColumnDefinition(name string, def *database.ColumnDefin
defaultValue := formatDefaultValue(def.Default) defaultValue := formatDefaultValue(def.Default)
parts = append(parts, fmt.Sprintf("DEFAULT %s", defaultValue)) parts = append(parts, fmt.Sprintf("DEFAULT %s", defaultValue))
} }
}
return strings.Join(parts, " ") return strings.Join(parts, " ")
} }