123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package helpers
- import (
- "encoding/json"
- "fmt"
- "os"
- "time"
- "git.aetherial.dev/aeth/keiji/pkg/env"
- "github.com/google/uuid"
- "github.com/redis/go-redis/v9"
- )
- type InvalidSkipArg struct {Skip int}
- func (i *InvalidSkipArg) Error() string {
- return fmt.Sprintf("Invalid skip amount was passed: %v", i.Skip)
- }
- type ImageStoreItem struct {
- Identifier string `json:"identifier"`
- Filename string `json:"filename"`
- AbsolutePath string `json:"absolute_path"`
- Title string `json:"title" form:"title"`
- Created string `json:"created"`
- Desc string `json:"description" form:"description"`
- Category string `json:"category"`
- ApiPath string
- }
- /*
- Create a new ImageStoreItem
- :param fname: the name of the file to be saved
- :param title: the canonical title to give the image
- :param desc: the description to associate to the image
- */
- func NewImageStoreItem(fname string, title string, desc string) *ImageStoreItem {
- id := uuid.New()
- img := ImageStoreItem{
- Identifier: id.String(),
- Filename: fname,
- Title: title,
- Category: DIGITAL_ART,
- AbsolutePath: fmt.Sprintf("%s/%s", GetImageStore(), fname),
- Created: time.Now().UTC().String(),
- Desc: desc,
- }
- return &img
- }
- /*
- Function to return the location of the image store. Wrapping the env call in
- a function so that refactoring is easier
- */
- func GetImageStore() string {
- return os.Getenv(env.IMAGE_STORE)
- }
- /*
- Return database entries of the images that exist in the imagestore
- :param rds: pointer to a RedisCaller to perform the lookups with
- */
- func GetImageData(rds *RedisCaller) ([]*ImageStoreItem, error) {
- ids, err := rds.GetByCategory(DIGITAL_ART)
- if err != nil {
- return nil, err
- }
- var imageEntries []*ImageStoreItem
- for i := range ids {
- val, err := rds.Client.Get(rds.ctx, ids[i]).Result()
- if err == redis.Nil {
- return nil, err
- } else if err != nil {
- return nil, err
- }
- data := []byte(val)
- var imageEntry ImageStoreItem
- err = json.Unmarshal(data, &imageEntry)
- if err != nil {
- return nil, err
- }
- imageEntry.ApiPath = fmt.Sprintf("/api/v1/images/%s", imageEntry.Filename)
- imageEntries = append(imageEntries, &imageEntry)
- }
- return imageEntries, err
- }
|