crm/tools/add_intended_product_column.go
2026-01-28 20:48:50 +08:00

75 lines
1.5 KiB
Go

package main
import (
"database/sql"
"fmt"
"log"
"os"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// Database connection parameters
host := os.Getenv("DB_HOST")
if host == "" {
host = "localhost"
}
user := os.Getenv("DB_USER")
if user == "" {
user = "root"
}
password := os.Getenv("DB_PASSWORD")
if password == "" {
password = ""
}
dbName := os.Getenv("DB_NAME")
if dbName == "" {
dbName = "crm_db"
}
port := os.Getenv("DB_PORT")
if port == "" {
port = "3306"
}
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
user, password, host, port, dbName)
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatal("Failed to connect to database:", err)
}
defer db.Close()
// Check if column exists
var columnExists int
err = db.QueryRow(`
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ?
AND TABLE_NAME = 'trial_periods'
AND COLUMN_NAME = 'intended_product'
`, dbName).Scan(&columnExists)
if err != nil {
log.Fatal("Failed to check column existence:", err)
}
if columnExists > 0 {
log.Println("✅ Column 'intended_product' already exists in trial_periods table")
return
}
// Add the intended_product column
_, err = db.Exec(`
ALTER TABLE trial_periods
ADD COLUMN intended_product VARCHAR(255) DEFAULT '' AFTER source
`)
if err != nil {
log.Fatal("Failed to add intended_product column:", err)
}
log.Println("✅ Successfully added 'intended_product' column to trial_periods table")
}