aboutsummaryrefslogtreecommitdiff
path: root/internal/db
diff options
context:
space:
mode:
Diffstat (limited to 'internal/db')
-rw-r--r--internal/db/redis/image.go35
-rw-r--r--internal/db/redis/redis.go20
2 files changed, 55 insertions, 0 deletions
diff --git a/internal/db/redis/image.go b/internal/db/redis/image.go
new file mode 100644
index 0000000..6814fb7
--- /dev/null
+++ b/internal/db/redis/image.go
@@ -0,0 +1,35 @@
+package redis
+
+import (
+ "fmt"
+ "log"
+
+ "github.com/gomodule/redigo/redis"
+
+ "git.ofmax.li/iserv/internal/image"
+)
+
+const V1FilePathFmt = "filepath:up/%s"
+
+// ImageRepo deps. for storage
+type ImageRepo struct {
+ db *redis.Pool
+}
+
+// NewRedisImageRepo
+func NewRedisImageRepo(conn *redis.Pool) *ImageRepo {
+ return &ImageRepo{
+ conn,
+ }
+}
+
+func (r *ImageRepo) AddNewFile(filename string, meta *image.PostMeta, timeout int) error {
+ conn := r.db.Get()
+ defer conn.Close()
+ key := fmt.Sprintf(V1FilePathFmt, filename)
+ _, err := conn.Do("HMSET", redis.Args{}.Add(key).AddFlat(meta)...)
+ if err != nil {
+ log.Fatal(err)
+ }
+ return err
+}
diff --git a/internal/db/redis/redis.go b/internal/db/redis/redis.go
new file mode 100644
index 0000000..d769bb4
--- /dev/null
+++ b/internal/db/redis/redis.go
@@ -0,0 +1,20 @@
+package redis
+
+import (
+ "time"
+
+ "github.com/gomodule/redigo/redis"
+
+ "gitlab.com/grumps/environ"
+)
+
+var redisServer = environ.GetEnv("AUTH_REDIS", "localhost:6379")
+
+// CreatePool redis connection pool
+func CreatePool(addr string) *redis.Pool {
+ return &redis.Pool{
+ MaxIdle: 3,
+ IdleTimeout: 240 * time.Second,
+ Dial: func() (redis.Conn, error) { return redis.Dial("tcp", addr) },
+ }
+}