From be137e0883d40e511832a7af273d2696fdefec96 Mon Sep 17 00:00:00 2001 From: Peder Vatn Austad Date: Fri, 24 May 2024 22:50:31 +0200 Subject: [PATCH] 0.2.1 databatage conectage --- config/conf.json | 11 ++++++++++ config/config.go | 35 +++++++++++++++++++++++++++++ config/db.go | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ data/data.go | 2 +- go.mod | 2 ++ go.sum | 2 ++ main.go | 4 ++++ 7 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 config/conf.json create mode 100644 config/config.go create mode 100644 config/db.go create mode 100644 go.sum diff --git a/config/conf.json b/config/conf.json new file mode 100644 index 0000000..6082579 --- /dev/null +++ b/config/conf.json @@ -0,0 +1,11 @@ +{ + "database": { + "host": "localhost", + "port": "5432", + "user": "postgres", + "password": "postgres", + "dbname": "ti1", + "sslmode": "disable" + }, + "temp": "value" +} \ No newline at end of file diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000..d928980 --- /dev/null +++ b/config/config.go @@ -0,0 +1,35 @@ +package config + +import ( + "encoding/json" + "fmt" + "os" +) + +type Config struct { + Database struct { + Host string `json:"host"` + Port string `json:"port"` + User string `json:"user"` + Password string `json:"password"` + DBName string `json:"dbname"` + SSLMode string `json:"sslmode"` + } `json:"database"` + Temp string `json:"temp"` +} + +func LoadConfig(file string) (Config, error) { + var config Config + configFile, err := os.Open(file) + if err != nil { + return config, fmt.Errorf("failed to open config file: %w", err) + } + defer configFile.Close() + + jsonParser := json.NewDecoder(configFile) + if err := jsonParser.Decode(&config); err != nil { + return config, fmt.Errorf("failed to parse config file: %w", err) + } + + return config, nil +} diff --git a/config/db.go b/config/db.go new file mode 100644 index 0000000..c43b004 --- /dev/null +++ b/config/db.go @@ -0,0 +1,57 @@ +package config + +import ( + "database/sql" + "fmt" + "log" + + _ "github.com/lib/pq" +) + +func ConnectToPostgreSQL() (*sql.DB, error) { + fmt.Println("Connecting to PostgreSQL...") + config, err := LoadConfig("config/conf.json") + if err != nil { + return nil, err + } + + fmt.Println("Configuration loaded successfully!") + + connStr := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", + config.Database.Host, config.Database.Port, config.Database.User, config.Database.Password, config.Database.DBName, config.Database.SSLMode) + + // Open connection to database + db, err := sql.Open("postgres", connStr) + if err != nil { + return nil, err + } + + fmt.Println("Connection to PostgreSQL opened successfully!") + + // Ping database to verify connection + err = db.Ping() + + fmt.Println(err) + if err != nil { + return nil, err + } + + log.Println("Connected to PostgreSQL!") + + return db, nil +} + +func PrintDBConfig() { + config, err := LoadConfig("config/conf.json") + if err != nil { + fmt.Println("Error loading config:", err) + return + } + + fmt.Println("Configuration:", config) + fmt.Println("Host:", config.Database.Host) + fmt.Println("Port:", config.Database.Port) + fmt.Println("User:", config.Database.User) + fmt.Println("Database Host:", config.Database.Host) + fmt.Println("Database Password:", config.Database.Password) +} diff --git a/data/data.go b/data/data.go index ceabda5..5e42599 100644 --- a/data/data.go +++ b/data/data.go @@ -127,7 +127,7 @@ type Data struct { // FetchData function to retrieve data from API func FetchData() (*Data, error) { - resp, err := http.Get("https://api.entur.io/realtime/v1/rest/et?maxSize=1") + resp, err := http.Get("https://api.entur.io/realtime/v1/rest/et?maxSize=0") if err != nil { return nil, err } diff --git a/go.mod b/go.mod index d990866..f97cda7 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module ti1 go 1.22.1 + +require github.com/lib/pq v1.10.9 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..aeddeae --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= diff --git a/main.go b/main.go index a24c404..4d23ae2 100644 --- a/main.go +++ b/main.go @@ -2,11 +2,15 @@ package main import ( "log" + "ti1/config" "ti1/data" // Import the data package "ti1/export" ) func main() { + config.PrintDBConfig() + config.ConnectToPostgreSQL() + data, err := data.FetchData() // Use the FetchData function from the data package if err != nil { log.Fatal(err)