|
@@ -0,0 +1,55 @@
|
|
|
+package analytic
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "net/http"
|
|
|
+
|
|
|
+ "imuslab.com/zoraxy/mod/database"
|
|
|
+ "imuslab.com/zoraxy/mod/statistic"
|
|
|
+ "imuslab.com/zoraxy/mod/utils"
|
|
|
+)
|
|
|
+
|
|
|
+type DataLoader struct {
|
|
|
+ Database *database.Database
|
|
|
+}
|
|
|
+
|
|
|
+//Create a new data loader for loading statistic from database
|
|
|
+func NewDataLoader(db *database.Database) *DataLoader {
|
|
|
+ return &DataLoader{
|
|
|
+ Database: db,
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DataLoader) HandleSummaryList(w http.ResponseWriter, r *http.Request) {
|
|
|
+ entries, err := d.Database.ListTable("stats")
|
|
|
+ if err != nil {
|
|
|
+ utils.SendErrorResponse(w, "unable to load data from database")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ entryDates := []string{}
|
|
|
+ for _, keypairs := range entries {
|
|
|
+ entryDates = append(entryDates, string(keypairs[0]))
|
|
|
+ }
|
|
|
+
|
|
|
+ js, _ := json.MarshalIndent(entryDates, "", " ")
|
|
|
+ utils.SendJSONResponse(w, string(js))
|
|
|
+}
|
|
|
+
|
|
|
+func (d *DataLoader) HandleLoadTargetDaySummary(w http.ResponseWriter, r *http.Request) {
|
|
|
+ day, err := utils.GetPara(r, "id")
|
|
|
+ if err != nil {
|
|
|
+ utils.SendErrorResponse(w, "id cannot be empty")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ targetDailySummary := statistic.DailySummaryExport{}
|
|
|
+ err = d.Database.Read("stats", day, &targetDailySummary)
|
|
|
+ if err != nil {
|
|
|
+ utils.SendErrorResponse(w, "target day data not found")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ js, _ := json.Marshal(targetDailySummary)
|
|
|
+ utils.SendJSONResponse(w, string(js))
|
|
|
+}
|