upgrade.go 1.2 KB
Newer Older
aaronchen2k2k's avatar
aaronchen2k2k 已提交
1 2 3 4 5 6 7
package action

import (
	"database/sql"
	"fmt"
	constant "github.com/easysoft/zendata/src/utils/const"
	logUtils "github.com/easysoft/zendata/src/utils/log"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
8
	numbUtils "github.com/easysoft/zendata/src/utils/numb"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
9 10 11 12 13 14 15

	_ "github.com/mattn/go-sqlite3"
)

func Upgrade() {
	db, err := sql.Open(constant.SqliteDriver, constant.SqliteSource)
	if err != nil {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
16
		logUtils.Screen("fail to open " + constant.SqliteSource + ": " + err.Error())
aaronchen2k2k's avatar
aaronchen2k2k 已提交
17 18 19
		return
	}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
20
	sql := "SELECT id, 'name', state, zipCode, cityCode FROM city"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
21 22
	rows, err := db.Query(sql)
	if err != nil {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
23
		logUtils.Screen("fail to exec query " + sql + ": " + err.Error())
aaronchen2k2k's avatar
aaronchen2k2k 已提交
24 25 26
		return
	}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
27
	sqls := make([]string, 0)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
28 29 30
	for rows.Next() {
		var id int
		var name string
aaronchen2k2k's avatar
aaronchen2k2k 已提交
31
		var state string
aaronchen2k2k's avatar
aaronchen2k2k 已提交
32 33
		var zipCode string
		var cityCode string
aaronchen2k2k's avatar
aaronchen2k2k 已提交
34

aaronchen2k2k's avatar
aaronchen2k2k 已提交
35
		err = rows.Scan(&id, &name, &state, &zipCode, &cityCode)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
36
		if err != nil {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
37
			logUtils.Screen("fail to get sqlite3 row: " + err.Error())
aaronchen2k2k's avatar
aaronchen2k2k 已提交
38 39
			return
		}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
40 41 42 43 44 45 46 47 48 49 50
		fmt.Println(numbUtils.NumToBHex(id), name, state, zipCode, cityCode)

		sql := fmt.Sprintf("UPDATE city SET seq = '%s' where id = %d;", numbUtils.NumToBHex(id), id)
		sqls = append(sqls, sql)
	}

	for _, sql := range sqls {
		_, err := db.Exec(sql)
		if err != nil {
			logUtils.Screen("fail to update row: " + err.Error())
		}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
51 52
	}
}