MCPcopy Index your code
hub / github.com/GoEdgeLab/EdgeNode / Init

Method Init

internal/metrics/task_sqlite.go:83–183  ·  view source on GitHub ↗

Init 初始化

()

Source from the content-addressed store, hash-verified

81
82// Init 初始化
83func (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
130CREATE INDEX IF NOT EXISTS "serverId"
131ON "` + this.statTableName + `" (
132 "serverId" ASC,
133 "version" ASC
134);
135
136CREATE UNIQUE INDEX IF NOT EXISTS "hash"
137ON "` + this.statTableName + `" (
138 "hash" ASC
139);`)
140 if err != nil {

Callers

nothing calls this directly

Calls 9

loadServerIdMapMethod · 0.95
PrintlnFunction · 0.92
OpenWriterFunction · 0.92
SetMaxOpenConnsMethod · 0.80
StatMethod · 0.65
StringMethod · 0.45
ExecMethod · 0.45
EnableStatMethod · 0.45
PrepareMethod · 0.45

Tested by

no test coverage detected