cf 默认不跳过预检查

pull/78/head^2
zhangchenhao 2025-05-16 15:06:40 +08:00
parent 8f8f352c6b
commit a286500c05
3 changed files with 25 additions and 20 deletions

View File

@ -135,7 +135,12 @@ func Apply(cfg map[string]any, logger *public.Logger) (map[string]any, error) {
var skipCheck bool var skipCheck bool
if cfg["skip_check"] == nil { if cfg["skip_check"] == nil {
// 默认跳过预检查
skipCheck = true skipCheck = true
// cf 默认不跳过预检查
if providerStr == "cloudflare" {
skipCheck = false
}
} else { } else {
switch v := cfg["skip_check"].(type) { switch v := cfg["skip_check"].(type) {
case int: case int:

View File

@ -53,7 +53,7 @@ func DeployToTX(cfg map[string]any) error {
if !ok { if !ok {
return fmt.Errorf("证书错误cert") return fmt.Errorf("证书错误cert")
} }
var providerID string var providerID string
switch v := cfg["provider_id"].(type) { switch v := cfg["provider_id"].(type) {
case float64: case float64:
@ -83,16 +83,16 @@ func DeployToTX(cfg map[string]any) error {
region = r region = r
} }
client := ClientTencentcloud(providerConfig["secret_id"], providerConfig["secret_key"], region) client := ClientTencentcloud(providerConfig["secret_id"], providerConfig["secret_key"], region)
// 上传证书 // 上传证书
certificateId, err := UploadToTX(client, strings.TrimSpace(keyPem), strings.TrimSpace(certPem)) certificateId, err := UploadToTX(client, strings.TrimSpace(keyPem), strings.TrimSpace(certPem))
if err != nil { if err != nil {
return err return err
} }
// fmt.Println(certificateId) // fmt.Println(certificateId)
request := ssl.NewDeployCertificateInstanceRequest() request := ssl.NewDeployCertificateInstanceRequest()
request.CertificateId = common.StringPtr(certificateId) request.CertificateId = common.StringPtr(certificateId)
if cfg["resource_type"] == "cdn" { if cfg["resource_type"] == "cdn" {
domain, ok := cfg["domain"].(string) domain, ok := cfg["domain"].(string)
@ -118,7 +118,7 @@ func DeployToTX(cfg map[string]any) error {
request.InstanceIdList = common.StringPtrs([]string{fmt.Sprintf("%s|%s|%s", region, bucket, domain)}) request.InstanceIdList = common.StringPtrs([]string{fmt.Sprintf("%s|%s|%s", region, bucket, domain)})
request.ResourceType = common.StringPtr("cos") request.ResourceType = common.StringPtr("cos")
} }
// 返回的resp是一个DeployCertificateInstanceResponse的实例与请求对象对应 // 返回的resp是一个DeployCertificateInstanceResponse的实例与请求对象对应
response, err := client.DeployCertificateInstance(request) response, err := client.DeployCertificateInstance(request)
if _, ok := err.(*errors.TencentCloudSDKError); ok { if _, ok := err.(*errors.TencentCloudSDKError); ok {

View File

@ -4,32 +4,32 @@ import (
"database/sql" "database/sql"
"fmt" "fmt"
"os" "os"
_ "modernc.org/sqlite" // 使用 pure Go 实现的 SQLite 驱动 _ "modernc.org/sqlite" // 使用 pure Go 实现的 SQLite 驱动
) )
func EnsureDatabaseWithTables(targetDBPath string, baseDBPath string, tables []string) error { func EnsureDatabaseWithTables(targetDBPath string, baseDBPath string, tables []string) error {
// 1. 检查数据库是否存在 // 1. 检查数据库是否存在
if _, err := os.Stat(targetDBPath); err == nil { if _, err := os.Stat(targetDBPath); err == nil {
fmt.Printf("数据库 %s 已存在,跳过迁移。\n", targetDBPath) // fmt.Printf("数据库 %s 已存在,跳过迁移。\n", targetDBPath)
return nil return nil
} }
fmt.Printf("数据库 %s 不存在,开始从基础数据库迁移表...\n", targetDBPath) // fmt.Printf("数据库 %s 不存在,开始从基础数据库迁移表...\n", targetDBPath)
// 2. 打开源数据库(只读)和目标数据库(新建) // 2. 打开源数据库(只读)和目标数据库(新建)
baseDB, err := sql.Open("sqlite", baseDBPath) baseDB, err := sql.Open("sqlite", baseDBPath)
if err != nil { if err != nil {
return fmt.Errorf("打开基础数据库失败: %v", err) return fmt.Errorf("打开基础数据库失败: %v", err)
} }
defer baseDB.Close() defer baseDB.Close()
targetDB, err := sql.Open("sqlite", targetDBPath) targetDB, err := sql.Open("sqlite", targetDBPath)
if err != nil { if err != nil {
return fmt.Errorf("创建目标数据库失败: %v", err) return fmt.Errorf("创建目标数据库失败: %v", err)
} }
defer targetDB.Close() defer targetDB.Close()
for _, table := range tables { for _, table := range tables {
// 2.1 获取建表语句 // 2.1 获取建表语句
var createSQL string var createSQL string
@ -38,26 +38,26 @@ func EnsureDatabaseWithTables(targetDBPath string, baseDBPath string, tables []s
if err != nil { if err != nil {
return fmt.Errorf("获取表 %s 的结构失败: %v", table, err) return fmt.Errorf("获取表 %s 的结构失败: %v", table, err)
} }
// 2.2 在目标库中创建表 // 2.2 在目标库中创建表
_, err = targetDB.Exec(createSQL) _, err = targetDB.Exec(createSQL)
if err != nil { if err != nil {
return fmt.Errorf("创建表 %s 失败: %v", table, err) return fmt.Errorf("创建表 %s 失败: %v", table, err)
} }
// 2.3 从基础库读取数据并插入目标库 // 2.3 从基础库读取数据并插入目标库
rows, err := baseDB.Query(fmt.Sprintf("SELECT * FROM %s", table)) rows, err := baseDB.Query(fmt.Sprintf("SELECT * FROM %s", table))
if err != nil { if err != nil {
return fmt.Errorf("读取表 %s 数据失败: %v", table, err) return fmt.Errorf("读取表 %s 数据失败: %v", table, err)
} }
cols, _ := rows.Columns() cols, _ := rows.Columns()
values := make([]interface{}, len(cols)) values := make([]interface{}, len(cols))
valuePtrs := make([]interface{}, len(cols)) valuePtrs := make([]interface{}, len(cols))
tx, _ := targetDB.Begin() tx, _ := targetDB.Begin()
stmt, _ := tx.Prepare(buildInsertSQL(table, len(cols))) stmt, _ := tx.Prepare(buildInsertSQL(table, len(cols)))
for rows.Next() { for rows.Next() {
for i := range values { for i := range values {
valuePtrs[i] = &values[i] valuePtrs[i] = &values[i]
@ -65,13 +65,13 @@ func EnsureDatabaseWithTables(targetDBPath string, baseDBPath string, tables []s
rows.Scan(valuePtrs...) rows.Scan(valuePtrs...)
stmt.Exec(values...) stmt.Exec(values...)
} }
stmt.Close() stmt.Close()
tx.Commit() tx.Commit()
rows.Close() rows.Close()
} }
fmt.Println("迁移完成。") // fmt.Println("迁移完成。")
return nil return nil
} }