Ma Suhyeon

Recover APIs

...@@ -4,11 +4,8 @@ import ( ...@@ -4,11 +4,8 @@ import (
4 "context" 4 "context"
5 "fmt" 5 "fmt"
6 "net/http" 6 "net/http"
7 - "strconv"
8 - "strings"
9 "time" 7 "time"
10 8
11 - "github.com/jmoiron/sqlx"
12 "github.com/labstack/echo/v4" 9 "github.com/labstack/echo/v4"
13 "github.com/olivere/elastic/v7" 10 "github.com/olivere/elastic/v7"
14 11
...@@ -231,80 +228,51 @@ func (app *App) GetMessagesAnalyses(c echo.Context) error { ...@@ -231,80 +228,51 @@ func (app *App) GetMessagesAnalyses(c echo.Context) error {
231 } 228 }
232 229
233 type Process struct { 230 type Process struct {
234 - UID string `json:"uid" db:"UID"` 231 + PID int `json:"pid" db:"pid"`
235 - PID int `json:"pid" db:"PID"` 232 + UID string `json:"uid" db:"uid"`
236 - PPID int `json:"ppid" db:"PPID"` 233 + PPID int `json:"ppid" db:"ppid"`
237 - STIME string `json:"stime" db:"STIME"` 234 + STime string `json:"stime" db:"stime"`
238 - TIME string `json:"time" db:"TIME"` 235 + Time string `json:"time" db:"time"`
239 - CMD string `json:"cmd" db:"CMD"` 236 + CMD string `json:"cmd" db:"cmd"`
240 } 237 }
241 238
242 func (app *App) GetProcesses(c echo.Context) error { 239 func (app *App) GetProcesses(c echo.Context) error {
243 processes := []Process{} 240 processes := []Process{}
244 - db, err := sqlx.Connect("sqlite3", fmt.Sprintf("data/1/%s", c.Param("file")))
245 - if err != nil {
246 - return echo.NewHTTPError(http.StatusInternalServerError, "Could not open db file")
247 - }
248 - defer db.Close()
249 241
250 - query := `SELECT UID, CAST(PID AS INTEGER) PID, CAST(PPID AS INTEGER) PPID, STIME, TIME, CMD FROM process WHERE UID LIKE 'u%' ORDER BY TIME DESC` 242 + query := "SELECT * FROM processes WHERE `extraction_no`=? AND `uid` LIKE 'u%' ORDER BY `time` DESC"
251 - db.Select(&processes, query) 243 + fmt.Println(app.db.Unsafe().Select(&processes, query, c.Param("no")))
252 244
253 return c.JSON(http.StatusOK, processes) 245 return c.JSON(http.StatusOK, processes)
254 } 246 }
255 247
256 type Alarm struct { 248 type Alarm struct {
257 - ID string `json:"id"` 249 + ID string `json:"id" db:"id"`
258 - When time.Time `json:"when"` 250 + When time.Time `json:"when" db:"when"`
259 - History []AlarmHistory `json:"history"` 251 + History []AlarmHistory `json:"history" db:"-"`
260 } 252 }
261 253
262 type AlarmHistory struct { 254 type AlarmHistory struct {
263 - Type string `json:"type"` 255 + Type string `json:"type" db:"type"`
264 - When time.Time `json:"when"` 256 + When time.Time `json:"when" db:"when"`
265 } 257 }
266 258
267 func (app *App) GetAlarms(c echo.Context) error { 259 func (app *App) GetAlarms(c echo.Context) error {
268 - db, err := sqlx.Connect("sqlite3", fmt.Sprintf("data/1/%s", c.Param("file"))) 260 + alarms := []Alarm{}
269 - if err != nil { 261 + query := "SELECT * FROM alarms WHERE `extraction_no`=?"
270 - return echo.NewHTTPError(http.StatusInternalServerError, "Could not open db file")
271 - }
272 - defer db.Close()
273 -
274 - alarms := map[string]Alarm{}
275 - rows, _ := db.Queryx("SELECT * FROM alarm ORDER BY TIME")
276 -
277 - for rows.Next() {
278 - var tm string
279 - var typ string
280 - var detail string
281 262
282 - rows.Scan(&tm, &typ, &detail) 263 + extNo := c.Param("no")
283 - 264 + if err := app.db.Unsafe().Select(&alarms, query, extNo); err != nil {
284 - detail = detail[strings.Index(detail, "{")+1 : strings.Index(detail, "}")] 265 + return err
285 - s := strings.Split(detail, " ")
286 - timestamp, _ := strconv.ParseInt(s[4], 10, 64)
287 - timestamp /= 1000
288 -
289 - if _, ok := alarms[s[0]]; !ok {
290 - alarms[s[0]] = Alarm{ID: s[0], When: time.Unix(timestamp, 0)}
291 } 266 }
292 267
293 - when, _ := time.Parse("2006-01-02 15:04:05", tm) 268 + query = "SELECT * FROM alarm_histories WHERE `extraction_no`=? AND `id`=?"
294 - alarm := alarms[s[0]] 269 + for i := range alarms {
295 - alarm.History = append(alarms[s[0]].History, AlarmHistory{ 270 + if err := app.db.Unsafe().Select(&alarms[i].History, query, extNo, alarms[i].ID); err != nil {
296 - Type: typ, 271 + return err
297 - When: when,
298 - })
299 - alarms[s[0]] = alarm
300 } 272 }
301 -
302 - results := []Alarm{}
303 - for _, v := range alarms {
304 - results = append(results, v)
305 } 273 }
306 274
307 - return c.JSON(http.StatusOK, results) 275 + return c.JSON(http.StatusOK, alarms)
308 } 276 }
309 277
310 type Schedule struct { 278 type Schedule struct {
......
...@@ -8,6 +8,9 @@ import ( ...@@ -8,6 +8,9 @@ import (
8 "net/http" 8 "net/http"
9 "os" 9 "os"
10 "os/exec" 10 "os/exec"
11 + "strconv"
12 + "strings"
13 + "time"
11 14
12 "github.com/dgrijalva/jwt-go" 15 "github.com/dgrijalva/jwt-go"
13 "github.com/jmoiron/sqlx" 16 "github.com/jmoiron/sqlx"
...@@ -138,7 +141,7 @@ func (app *App) PostExtractions(c echo.Context) error { ...@@ -138,7 +141,7 @@ func (app *App) PostExtractions(c echo.Context) error {
138 } 141 }
139 } 142 }
140 143
141 - /*alarms := map[string]Alarm{} 144 + alarms := map[string]Alarm{}
142 rows, _ = db.Queryx("SELECT * FROM alarm ORDER BY TIME") 145 rows, _ = db.Queryx("SELECT * FROM alarm ORDER BY TIME")
143 146
144 for rows.Next() { 147 for rows.Next() {
...@@ -172,7 +175,7 @@ func (app *App) PostExtractions(c echo.Context) error { ...@@ -172,7 +175,7 @@ func (app *App) PostExtractions(c echo.Context) error {
172 for _, h := range v.History { 175 for _, h := range v.History {
173 tx.Exec("INSERT INTO alarm_histories VALUES (?, ?, ?, ?)", extNo, v.ID, h.Type, h.When) 176 tx.Exec("INSERT INTO alarm_histories VALUES (?, ?, ?, ?)", extNo, v.ID, h.Type, h.When)
174 } 177 }
175 - }*/ 178 + }
176 179
177 tx.Commit() 180 tx.Commit()
178 181
......