Initial support for SQL database

main
Yasen Pramatarov 2024-10-13 20:06:36 +03:00
parent b6567e2ef1
commit e26bb3cc0f
4 changed files with 50 additions and 6 deletions

1
.gitignore vendored 100644
View File

@ -0,0 +1 @@
jilo-server

View File

@ -12,16 +12,22 @@ This project is licensed under the GNU General Public License version 2 (GPL-2.0
Clone the git repo. Either run the server with Go or build it and run the executable.
Dependencies:
```bash
apt install gcc sqlite3 libsqlite3-dev
```
Run it (mainly used for tests):
```bash
go run main.go
CGO_ENABLED=1 go run main.go
```
Build the agent:
```bash
go build -o jilo-server main.go
CGO_ENABLED=1 go build -o jilo-server main.go
```
## configuration

43
main.go
View File

@ -1,12 +1,10 @@
package main
import (
// "database/sql"
// "fmt"
"database/sql"
"io/ioutil"
"log"
"net/http"
// "os"
"time"
_ "github.com/mattn/go-sqlite3"
@ -43,6 +41,30 @@ func readConfig(filePath string) Config {
return config
}
func setupDatabase(dbPath string) (*sql.DB, error) {
// Open the database
db, err := sql.Open("sqlite3", dbPath)
if err != nil {
return nil, err
}
// If the table is not there, initialize it
createTable := `
CREATE TABLE IF NOT EXISTS endpoint_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
status_code INTEGER,
response_time_ms INTEGER
);`
_, err = db.Exec(createTable)
if err != nil {
return nil, err
}
return db, nil
}
func checkEndpoint(endpoint string) (int, int64) {
start := time.Now()
resp, err := http.Get(endpoint)
@ -56,9 +78,24 @@ func checkEndpoint(endpoint string) (int, int64) {
return resp.StatusCode, elapsed
}
func saveData(db *sql.DB, statusCode int, responseTime int64) {
_, err := db.Exec("INSERT INTO endpoint_data (status_code, response_time_ms) VALUES (?, ?)", statusCode, responseTime)
if err != nil {
log.Println("Failed to insert data into the database:", err)
}
}
func main() {
// config file
config := readConfig("jilo-server.conf")
// Connect to or setup the database
db, err := setupDatabase(config.DatabasePath)
if err != nil {
log.Fatal("Failed to initialize the database:", err)
}
defer db.Close()
ticker := time.NewTicker(time.Duration(config.CheckPeriod) * time.Minute)
defer ticker.Stop()

BIN
meet.db 100644

Binary file not shown.