github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/utils/cache/cachedb/list.go (about) 1 package cachedb 2 3 import ( 4 "context" 5 "fmt" 6 "time" 7 ) 8 9 const ( 10 sqlList = `SELECT * FROM %s WHERE ttl > unixepoch();` 11 ) 12 13 type listT struct { 14 Key string 15 Value string 16 TTL string 17 } 18 19 func List(ctx context.Context, namespace string) ([]listT, error) { 20 rows, err := db.QueryContext(ctx, fmt.Sprintf(sqlList, namespace)) 21 if err != nil { 22 return nil, err 23 } 24 25 defer rows.Close() 26 27 var ( 28 slice []listT 29 key string 30 value string 31 ttl int64 32 ) 33 34 for rows.Next() { 35 err = rows.Scan(&key, &value, &ttl) 36 if err != nil { 37 return slice, err 38 } 39 slice = append(slice, listT{ 40 Key: key, 41 Value: value, 42 TTL: time.Unix(ttl, 0).Format(time.UnixDate), 43 }) 44 } 45 46 return slice, rows.Err() 47 }