Init 初始化
()
| 81 | |
| 82 | // Init 初始化 |
| 83 | func (this *SQLiteTask) Init() error { |
| 84 | this.statTableName = "stats" |
| 85 | |
| 86 | // 检查目录是否存在 |
| 87 | var dir = Tea.Root + "/data" |
| 88 | _, err := os.Stat(dir) |
| 89 | if err != nil { |
| 90 | err = os.MkdirAll(dir, 0777) |
| 91 | if err != nil { |
| 92 | return err |
| 93 | } |
| 94 | remotelogs.Println("METRIC", "create data dir '"+dir+"'") |
| 95 | } |
| 96 | |
| 97 | var path = dir + "/metric." + types.String(this.itemConfig.Id) + ".db" |
| 98 | |
| 99 | db, err := dbs.OpenWriter("file:" + path + "?cache=shared&mode=rwc&_journal_mode=WAL&_sync=" + dbs.SyncMode + "&_locking_mode=EXCLUSIVE") |
| 100 | if err != nil { |
| 101 | return err |
| 102 | } |
| 103 | db.SetMaxOpenConns(1) |
| 104 | this.db = db |
| 105 | |
| 106 | // 恢复数据库 |
| 107 | var recoverEnv, _ = os.LookupEnv("EdgeRecover") |
| 108 | if len(recoverEnv) > 0 { |
| 109 | for _, indexName := range []string{"serverId", "hash"} { |
| 110 | _, _ = db.Exec(`REINDEX "` + indexName + `"`) |
| 111 | } |
| 112 | } |
| 113 | |
| 114 | if teaconst.EnableDBStat { |
| 115 | this.db.EnableStat(true) |
| 116 | } |
| 117 | |
| 118 | //创建统计表 |
| 119 | _, err = db.Exec(`CREATE TABLE IF NOT EXISTS "` + this.statTableName + `" ( |
| 120 | "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, |
| 121 | "hash" varchar(32), |
| 122 | "keys" varchar(1024), |
| 123 | "value" real DEFAULT 0, |
| 124 | "time" varchar(32), |
| 125 | "serverId" integer DEFAULT 0, |
| 126 | "version" integer DEFAULT 0, |
| 127 | "isUploaded" integer DEFAULT 0 |
| 128 | ); |
| 129 | |
| 130 | CREATE INDEX IF NOT EXISTS "serverId" |
| 131 | ON "` + this.statTableName + `" ( |
| 132 | "serverId" ASC, |
| 133 | "version" ASC |
| 134 | ); |
| 135 | |
| 136 | CREATE UNIQUE INDEX IF NOT EXISTS "hash" |
| 137 | ON "` + this.statTableName + `" ( |
| 138 | "hash" ASC |
| 139 | );`) |
| 140 | if err != nil { |
nothing calls this directly
no test coverage detected