Browse Source

command to seed the redis database with data in the db_seed dir

AETH-erial 1 year ago
parent
commit
dead63fe4c
6 changed files with 50 additions and 55 deletions
  1. 1 0
      .gitignore
  2. 4 0
      Makefile
  3. 21 0
      cmd/seed/seed.go
  4. 0 25
      db_seed/headers-temp.json
  5. 0 30
      db_seed/menu-temp.json
  6. 24 0
      pkg/helpers/redis.go

+ 1 - 0
.gitignore

@@ -3,6 +3,7 @@
 
 # everything in the build directory
 build/linux/webserver/*
+build/linux/seed/*
 
 html/assets/images/*
 

+ 4 - 0
Makefile

@@ -2,6 +2,7 @@
 
 
 WEBSERVER = webserver
+SEED_CMD = seed
 SWAG := $(shell command -v swag 2> /dev/null)
 
 build:
@@ -20,6 +21,9 @@ ifndef SWAG
 endif
 	swag init -g ./cmd/$(WEBSERVER)/$(WEBSERVER).go
 
+build-seed-cmd:
+	go build -o ./build/linux/$(SEED_CMD)/$(SEED_CMD) ./cmd/$(SEED_CMD)/$(SEED_CMD).go
+
 dev-run:
 	go build -ldflags "-X main.WEB_ROOT=/home/aeth/keiji/html" \
 	-o ./build/linux/$(WEBSERVER)/$(WEBSERVER) ./cmd/$(WEBSERVER)/$(WEBSERVER).go && \

+ 21 - 0
cmd/seed/seed.go

@@ -0,0 +1,21 @@
+package main
+
+import (
+	"log"
+	"os"
+
+	"git.aetherial.dev/aeth/keiji/pkg/env"
+	"git.aetherial.dev/aeth/keiji/pkg/helpers"
+)
+
+
+func main() {
+	err := env.LoadAndVerifyEnv(os.Args[1], env.REQUIRED_VARS); if err != nil {
+		log.Fatal(err)
+	}
+	rds := helpers.NewRedisClient(helpers.RedisConf{Port: os.Getenv("REDIS_PORT"), Addr: os.Getenv("REDIS_ADDR")})
+	err = rds.SeedData(os.Args[2]); if err != nil {
+		log.Fatal(err)
+	}
+	
+}

+ 0 - 25
db_seed/headers-temp.json

@@ -1,25 +0,0 @@
-{
-    "category": "configuration",
-    "elements": [
-      {
-        "link": "http://adeptus-mechanicus.void:8085/git",
-        "png": "git.png"
-      },
-      {
-        "link": "https://www.linkedin.com/in/russell-hrubesky-a62237221/",
-        "png": "linkedin.png"
-      },
-      {
-        "link": "https://github.com/AETH-erial",
-        "png": "github.png"
-      },
-      {
-        "link": "https://twitter.com/Aetherial___",
-        "png": "twitter.png"
-      },
-      {
-        "link": "https://soundcloud.com/aeth-592553883",
-        "png": "soundcloud.png"
-      }
-    ]
-  }

+ 0 - 30
db_seed/menu-temp.json

@@ -1,30 +0,0 @@
-{
-    "category": "configuration",
-    "png": "menu.png",
-    "menu_links": [
-        {
-            "menu_link": "/home",
-            "link_text": "//Home"
-        },
-        {
-            "menu_link": "/blog",
-            "link_text": "//Dev blog"
-        },
-        {
-            "menu_link": "/technical",
-            "link_text": "//Technical Writeups"
-        },
-        {
-            "menu_link": "/digital",
-            "link_text": "//Digital Art"
-        },
-        {
-            "menu_link": "/creative",
-            "link_text": "//Creative Writing"
-        },
-        {
-            "menu_link":"/admin/panel",
-            "link_text": "//Administrator"
-        }
-    ]
-}

+ 24 - 0
pkg/helpers/redis.go

@@ -4,6 +4,8 @@ import (
 	"context"
 	"encoding/json"
 	"fmt"
+	"os"
+	"strings"
 
 	"github.com/redis/go-redis/v9"
 )
@@ -150,6 +152,28 @@ func (r *RedisCaller) editVal(id string, in interface{}) error {
 		return nil
     } 
 
+func (r *RedisCaller) SeedData(seedLoc string) error {
+	dirs, err := os.ReadDir(seedLoc)
+	if err != nil {
+		return err
+	}
+	for i := range dirs {
+		key := strings.Split(dirs[i].Name(), ".")[0]
+		b, err := os.ReadFile(fmt.Sprintf("%s/%s", seedLoc, dirs[i].Name()))
+		if err != nil {
+			return err
+		}
+		err = r.Client.Set(r.ctx, key, b, 0).Err()
+		if err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
+
+
+
 
 func (r *RedisCaller) UpdatePost(id string, new Document) error {
 	return r.editVal(id, new)