diff options
Diffstat (limited to 'internal/db/redis/image.go')
| -rw-r--r-- | internal/db/redis/image.go | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/internal/db/redis/image.go b/internal/db/redis/image.go index 6814fb7..1f4e8fa 100644 --- a/internal/db/redis/image.go +++ b/internal/db/redis/image.go @@ -9,7 +9,7 @@ import ( "git.ofmax.li/iserv/internal/image" ) -const V1FilePathFmt = "filepath:up/%s" +const V1FilePathFmt = "v1imagepost:%s" // ImageRepo deps. for storage type ImageRepo struct { @@ -23,13 +23,30 @@ func NewRedisImageRepo(conn *redis.Pool) *ImageRepo { } } +func fileKey(filename, V1FilePathFmt string) string { + return fmt.Sprintf(V1FilePathFmt, filename) +} + func (r *ImageRepo) AddNewFile(filename string, meta *image.PostMeta, timeout int) error { conn := r.db.Get() defer conn.Close() - key := fmt.Sprintf(V1FilePathFmt, filename) + key := fileKey(filename, V1FilePathFmt) _, err := conn.Do("HMSET", redis.Args{}.Add(key).AddFlat(meta)...) if err != nil { log.Fatal(err) } return err } + +func (r *ImageRepo) GetFile(fileUrl string) (*image.PostMeta, error) { + conn := r.db.Get() + defer conn.Close() + imageMeta := &image.PostMeta{} + key := fileKey(fileUrl, V1FilePathFmt) + res, err := redis.Values(conn.Do("HGETALL", key)) + if err != nil { + return &image.PostMeta{}, err + } + err = redis.ScanStruct(res, imageMeta) + return imageMeta, err +} |