From 8cc84e75d048024e59fb881d9ee4b09159e4d7b9 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Sat, 24 Aug 2024 15:40:49 +0200 Subject: [PATCH] Add basic structure --- .gitignore | 2 + go.mod | 10 +++++ go.sum | 12 ++++++ main.go | 110 ++++++++++++++++++++++++++++++++++++++--------------- 4 files changed, 104 insertions(+), 30 deletions(-) create mode 100644 .gitignore create mode 100644 go.sum diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ba9a5a2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +main.log diff --git a/go.mod b/go.mod index f9242b1..cfc178b 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,13 @@ module jysk-scraper go 1.23.0 + +require ( + github.com/joho/godotenv v1.5.1 + github.com/redis/go-redis/v9 v9.6.1 +) + +require ( + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..e124c2d --- /dev/null +++ b/go.sum @@ -0,0 +1,12 @@ +github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= +github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= +github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= +github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/redis/go-redis/v9 v9.6.1 h1:HHDteefn6ZkTtY5fGUE8tj8uy85AHk6zP7CpzIAM0y4= +github.com/redis/go-redis/v9 v9.6.1/go.mod h1:0C0c6ycQsdpVNQpxb1njEQIqkx5UcsM8FJCQLgE9+RA= diff --git a/main.go b/main.go index 470f0a5..f41f59b 100644 --- a/main.go +++ b/main.go @@ -1,38 +1,88 @@ -import ( - "context" - "fmt" +package main - "github.com/redis/go-redis/v9" +import ( + "context" + "fmt" + "io" + "log" + "os" + "strings" + + _ "embed" + + "github.com/joho/godotenv" + "github.com/redis/go-redis/v9" ) +var Error *log.Logger +var Warning *log.Logger + +func init() { + log.SetFlags(log.Lmicroseconds | log.Lshortfile) + logFile, err := os.Create("main.log") + if err != nil { + log.Printf("Error creating log file: %v", err) + return + } + logger := io.MultiWriter(os.Stdout, logFile) + log.SetOutput(logger) + + Error = log.New(io.MultiWriter(logFile, os.Stderr, os.Stdout), + fmt.Sprintf("%sERROR:%s ", "\033[0;101m", "\033[0m"), + log.Lmicroseconds|log.Lshortfile) + Warning = log.New(io.MultiWriter(logFile, os.Stdout), + fmt.Sprintf("%sWarning:%s ", "\033[0;93m", "\033[0m"), + log.Lmicroseconds|log.Lshortfile) +} + +//go:embed .env +var env string + var ctx = context.Background() -func ExampleClient() { - rdb := redis.NewClient(&redis.Options{ - Addr: "localhost:6379", - Password: "", // no password set - DB: 0, // use default DB - }) +func main() { + envvar, err := godotenv.Parse(strings.NewReader(env)) + if err != nil { + Error.Fatalf("Error parsing .env file: %v", err) + os.Exit(1) + } - err := rdb.Set(ctx, "key", "value", 0).Err() - if err != nil { - panic(err) - } + redisHost, ok := envvar["REDIS_HOST"] + if !ok { + Error.Fatalf("REDIS_HOST not set in .env file") + return + } + redisPassword, ok := envvar["REDIS_PASSWORD"] + if !ok { + Error.Fatalf("REDIS_PASSWORD not set in .env file") + return + } - val, err := rdb.Get(ctx, "key").Result() - if err != nil { - panic(err) - } - fmt.Println("key", val) + rdb := redis.NewClient(&redis.Options{ + Addr: redisHost, + Password: redisPassword, + DB: 0, + }) - val2, err := rdb.Get(ctx, "key2").Result() - if err == redis.Nil { - fmt.Println("key2 does not exist") - } else if err != nil { - panic(err) - } else { - fmt.Println("key2", val2) - } - // Output: key value - // key2 does not exist -} \ No newline at end of file + err = rdb.Set(ctx, "key", "value", 0).Err() + if err != nil { + panic(err) + } + + val, err := rdb.Get(ctx, "key").Result() + if err != nil { + panic(err) + } + fmt.Println("key", val) + + val2, err := rdb.Get(ctx, "key2").Result() + if err == redis.Nil { + fmt.Println("key2 does not exist") + } else if err != nil { + panic(err) + } else { + fmt.Println("key2", val2) + } + // Output: key value + // key2 does not exist +}