更新若干功能
This commit is contained in:
@@ -1,25 +1,61 @@
|
||||
// Applies init.sql to the local MySQL using the app's built-in default connection.
|
||||
// Applies init.sql using the packaged sync defaults (build/sync.defaults.json).
|
||||
package main
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
)
|
||||
|
||||
type syncDefaults struct {
|
||||
Host string `json:"host"`
|
||||
Port int `json:"port"`
|
||||
User string `json:"user"`
|
||||
Password string `json:"password"`
|
||||
Database string `json:"database"`
|
||||
}
|
||||
|
||||
func loadDefaults() syncDefaults {
|
||||
path := filepath.Join("build", "sync.defaults.json")
|
||||
raw, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
var c syncDefaults
|
||||
if err := json.Unmarshal(raw, &c); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if c.Port <= 0 {
|
||||
c.Port = 3306
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
func dsn(c syncDefaults, withDB bool) string {
|
||||
db := ""
|
||||
if withDB {
|
||||
db = c.Database
|
||||
}
|
||||
return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?multiStatements=false&charset=utf8mb4",
|
||||
c.User, c.Password, c.Host, c.Port, db)
|
||||
}
|
||||
|
||||
func main() {
|
||||
cfg := loadDefaults()
|
||||
if len(os.Args) > 1 && os.Args[1] == "inspect" {
|
||||
inspect()
|
||||
inspect(cfg)
|
||||
return
|
||||
}
|
||||
raw, err := os.ReadFile("init.sql")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
db, err := sql.Open("mysql", "code_count:code_count@tcp(101.43.12.11:3306)/?multiStatements=false&charset=utf8mb4")
|
||||
db, err := sql.Open("mysql", dsn(cfg, false))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
@@ -45,11 +81,11 @@ func main() {
|
||||
}
|
||||
}
|
||||
var n int
|
||||
if err := db.QueryRow("SELECT COUNT(*) FROM code_count.sync_settings").Scan(&n); err != nil {
|
||||
if err := db.QueryRow("SELECT COUNT(*) FROM " + cfg.Database + ".sync_settings").Scan(&n); err != nil {
|
||||
fmt.Println("verify failed:", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Println("ok, sync_settings rows:", n)
|
||||
fmt.Println("ok, sync_settings rows:", n, "host:", cfg.Host)
|
||||
}
|
||||
|
||||
func min(a, b int) int {
|
||||
@@ -59,8 +95,8 @@ func min(a, b int) int {
|
||||
return b
|
||||
}
|
||||
|
||||
func inspect() {
|
||||
db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/code_count?charset=utf8mb4")
|
||||
func inspect(cfg syncDefaults) {
|
||||
db, err := sql.Open("mysql", dsn(cfg, true))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user