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  }