diff --git a/backend/goserver/goserver b/backend/goserver/goserver
index d9b2026..f9ae3ba 100755
Binary files a/backend/goserver/goserver and b/backend/goserver/goserver differ
diff --git a/backend/goserver/main.go b/backend/goserver/main.go
index bf26d64..f04a143 100644
--- a/backend/goserver/main.go
+++ b/backend/goserver/main.go
@@ -1,56 +1,56 @@
package main
import (
"fmt"
"io/ioutil"
sw "kritaServers/backend/goserver/server"
"net/http"
"time"
_ "github.com/lib/pq"
)
type ColorGroup struct {
ID int
Name string
Colors []string
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
fmt.Printf("REQUEST")
bodyBuffer, _ := ioutil.ReadAll(r.Body)
fmt.Printf("after parse")
sw.InsertGeneralInfo(bodyBuffer)
}
func viewHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "
Last requests
%s
", "in console")
}
func main() {
fmt.Printf("hello")
// connectionString :=
// fmt.Sprintf("user=%s password=%s dbname=%s host=%s port=%s sslmode=disable", user, password, dbname, host, port)
sw.InitDB()
defer sw.Db.Close()
http.HandleFunc("/receiver/submit/org.krita.krita", handler)
http.HandleFunc("/GoogleLogin", sw.HandleGoogleLogin)
http.HandleFunc("/GoogleCallback", sw.HandleGoogleCallback)
http.HandleFunc("/agregatedData", sw.AgregatedDataHandler)
http.HandleFunc("/", viewHandler)
//ticker := time.NewTicker(time.Minute * 2)
- ticker := time.NewTicker(time.Minute * 10)
+ ticker := time.NewTicker(time.Minute * 2)
go func() {
for t := range ticker.C {
sw.CollectData()
fmt.Println("Tick at", t)
}
}()
http.ListenAndServe(":8080", nil)
}
diff --git a/backend/goserver/server/collectData.go b/backend/goserver/server/collectData.go
index 2b18f26..89c36ec 100644
--- a/backend/goserver/server/collectData.go
+++ b/backend/goserver/server/collectData.go
@@ -1,105 +1,126 @@
package server
import (
"encoding/json"
"fmt"
md "kritaServers/backend/goserver/server/models"
"strconv"
)
func count(query string, whatCount string) float64 {
rows, err := Db.Query(query, whatCount)
checkErr(err)
var count int
for rows.Next() {
err := rows.Scan(&count)
checkErr(err)
fmt.Println("scanned!")
}
return float64(count) //golang хранит числа в json только в флоат64
}
// //ПЕРЕМЕННОЕ КОЛИЧЕСТВО АРГУМЕНТОВ СДЕЛАТЬ
// func countOther(query string, whatCount1 string, whatCount2 string) float64 {
// rows, err := Db.Query(query, whatCount1, whatCount2)
// checkErr(err)
// var count int
// for rows.Next() {
// err := rows.Scan(&count)
// checkErr(err)
// fmt.Println("scanned other platforms!")
// }
// return float64(count) //golang хранит числа в json только в флоат64
// }
func countOther(query string, queryNotEql string, args ...string) float64 {
execQuery := query
for i, _ := range args { //Зачем я использую препаред стейтмент, когда можно без него?
if i != 0 {
execQuery += " and "
}
//execQuery += queryNotEql + "'" + v + "'"
execQuery += queryNotEql + "$" + strconv.Itoa(i+1)
}
//execQuery += ";"
fmt.Println(execQuery)
temp, _ := Db.Prepare(execQuery)
fmt.Println(len(args))
///rows, err := temp.Query(args)
old := args
new := make([]interface{}, len(old))
for i, v := range old {
new[i] = v
}
fmt.Println(new...)
rows, err := temp.Query(new...)
checkErr(err)
var count int
for rows.Next() {
err := rows.Scan(&count)
checkErr(err)
fmt.Println("scanned other abstruct platforms!")
}
return float64(count) //golang хранит числа в json только в флоат64
}
func CollectData() {
var result md.CollectedData
+
const osQuery = "select count( data -> 'platform'->>'os') as os from generalInfo where data -> 'platform'->>'os' = $1"
result.Platform.Os.Linux = count(osQuery, "linux")
fmt.Println(result.Platform.Os.Linux)
result.Platform.Os.Windows = count(osQuery, "windows")
result.Platform.Os.Mac = count(osQuery, "mac")
+
const osOtherQuery = "select count( data -> 'platform'->>'os') as os from generalInfo WHERE "
const osOtherNotEql = "data -> 'platform'->>'os' !="
result.Platform.Os.Other = countOther(osOtherQuery, osOtherNotEql, "linux", "windows", "mac")
//const osOtherQuery = "select count( data -> 'platform'->>'os') as os from generalInfo where data -> 'platform'->>'os' != $1 and data -> 'platform'->>'os'!=$2"
//result.Platform.Os.Other = countOther(osOtherQuery, "windows", "linux")
const archCPUQuery = "select count( data -> 'cpu'->>'architecture') from generalInfo where data -> 'cpu'->>'architecture' = $1"
result.CPU.Architecture.X86_64 = count(archCPUQuery, "x86_64")
result.CPU.Architecture.X86 = count(archCPUQuery, "i386") // может быть что-то другое нужно
- const archCPUOtherQuery = "select count( data -> 'cpu'->>'architecture') from generalInfo where "
+ const archCPUOtherQuery = "select count( data -> 'cpu'->>'architecture') from generalInfo where "
const archCPUOtherNotEql = "data -> 'cpu'->>'architecture' !="
result.CPU.Architecture.Other = countOther(archCPUOtherQuery, archCPUOtherNotEql, "x86_64", "i386")
+ const coreCountQuery = "select data -> 'cpu'->>'count' from generalInfo where data -> 'cpu'->>'count' = $1"
+ result.CPU.Cores.One = count(coreCountQuery, "1")
+ result.CPU.Cores.Two = count(coreCountQuery, "2")
+ result.CPU.Cores.Three = count(coreCountQuery, "3")
+ result.CPU.Cores.Four = count(coreCountQuery, "4")
+ result.CPU.Cores.Six = count(coreCountQuery, "6")
+ result.CPU.Cores.Eight = count(coreCountQuery, "8")
+
+ const coreCountOtherQuery = "select count( data -> 'cpu'->>'count') from generalInfo where "
+ const coreCountOtherNotEql = "data -> 'cpu'->>'count' !="
+ result.CPU.Cores.Other = countOther(coreCountOtherQuery, coreCountOtherNotEql, "1", "2", "3", "4", "6", "8")
+
+ const compilerTypeQuery = "select count(data->'compiler'->>'type') from generalInfo where data->'compiler'->>'type' = $1"
+ result.Compiler.Type.GCC = count(compilerTypeQuery, "GCC")
+
+ const compilerTypeOtherQuery = "select count(data->'compiler'->>'type') from generalInfo where "
+ const compilerTypeOtherNotEql = "data->'compiler'->>'type' !="
+ result.Compiler.Type.Other = countOther(compilerTypeOtherQuery, compilerTypeOtherNotEql, "GCC")
+
fmt.Println("BEFORE JSON")
const insertQuery = "INSERT into agregatedInfo(data) VALUES($1)"
b, err := json.Marshal(result)
fmt.Println("SUCCESS JSON")
fmt.Println(b)
checkErr(err)
_, err = Db.Exec(insertQuery, b)
checkErr(err)
}
diff --git a/backend/goserver/server/models/collectModel.go b/backend/goserver/server/models/collectModel.go
index 94c1862..1ec0bb3 100644
--- a/backend/goserver/server/models/collectModel.go
+++ b/backend/goserver/server/models/collectModel.go
@@ -1,28 +1,38 @@
package models
type CollectedData struct {
Platform struct {
Os struct {
Windows float64
Linux float64
Mac float64
Other float64
}
}
CPU struct {
Architecture struct {
X86_64 float64
X86 float64 //на самом деле x86_64 c маленькой буквы
Other float64
}
- // Cores struct {
- // One float64
- // Two float64
- // Three float64
- // Four float64
- // Six float64
- // Eight float64
- // Other float64
- // }
+ Cores struct {
+ One float64
+ Two float64
+ Three float64
+ Four float64
+ Six float64
+ Eight float64
+ Other float64
+ }
+ }
+ Compiler struct {
+ Type struct {
+ GCC float64
+ Other float64
+ }
+ Version struct {
+ V5dot4 float64
+ Other float64
+ }
}
}