@@ -22,16 +22,16 @@ var (
2222// diskMetaDB manages expiration times and headers for cache entries using bbolt.
2323type diskMetaDB struct {
2424 db * bbolt.DB
25- namespacesCache sync.Map // map[string ]bool - concurrent-safe
25+ namespacesCache sync.Map // map[Namespace ]bool - concurrent-safe
2626}
2727
2828// compositeKey creates a unique database key from namespace and cache key.
2929// Format: "namespace/hexkey" when namespace is set, or just "hexkey" when empty.
30- func compositeKey (namespace string , key Key ) []byte {
30+ func compositeKey (namespace Namespace , key Key ) []byte {
3131 if namespace == "" {
3232 return []byte (key .String ())
3333 }
34- return []byte (namespace + "/" + key .String ())
34+ return []byte (string ( namespace ) + "/" + key .String ())
3535}
3636
3737// newDiskMetaDB creates a new bbolt-backed metadata storage for the disk cache.
@@ -65,7 +65,7 @@ func newDiskMetaDB(dbPath string) (*diskMetaDB, error) {
6565 return ttlBucket .ForEach (func (k , _ []byte ) error {
6666 namespace , _ , found := bytes .Cut (k , []byte ("/" ))
6767 if found && len (namespace ) > 0 {
68- metaDB .namespacesCache .Store (string (namespace ), true )
68+ metaDB .namespacesCache .Store (Namespace (namespace ), true )
6969 }
7070 return nil
7171 })
@@ -77,7 +77,7 @@ func newDiskMetaDB(dbPath string) (*diskMetaDB, error) {
7777 return metaDB , nil
7878}
7979
80- func (s * diskMetaDB ) setTTL (namespace string , key Key , expiresAt time.Time ) error {
80+ func (s * diskMetaDB ) setTTL (namespace Namespace , key Key , expiresAt time.Time ) error {
8181 ttlBytes , err := expiresAt .MarshalBinary ()
8282 if err != nil {
8383 return errors .Errorf ("failed to marshal TTL: %w" , err )
@@ -100,7 +100,7 @@ func (s *diskMetaDB) setTTL(namespace string, key Key, expiresAt time.Time) erro
100100 return nil
101101}
102102
103- func (s * diskMetaDB ) set (key Key , namespace string , expiresAt time.Time , headers http.Header ) error {
103+ func (s * diskMetaDB ) set (key Key , namespace Namespace , expiresAt time.Time , headers http.Header ) error {
104104 ttlBytes , err := expiresAt .MarshalBinary ()
105105 if err != nil {
106106 return errors .Errorf ("failed to marshal TTL: %w" , err )
@@ -133,7 +133,7 @@ func (s *diskMetaDB) set(key Key, namespace string, expiresAt time.Time, headers
133133 return nil
134134}
135135
136- func (s * diskMetaDB ) getTTL (namespace string , key Key ) (time.Time , error ) {
136+ func (s * diskMetaDB ) getTTL (namespace Namespace , key Key ) (time.Time , error ) {
137137 var expiresAt time.Time
138138 dbKey := compositeKey (namespace , key )
139139 err := s .db .View (func (tx * bbolt.Tx ) error {
@@ -147,7 +147,7 @@ func (s *diskMetaDB) getTTL(namespace string, key Key) (time.Time, error) {
147147 return expiresAt , errors .WithStack (err )
148148}
149149
150- func (s * diskMetaDB ) getHeaders (namespace string , key Key ) (http.Header , error ) {
150+ func (s * diskMetaDB ) getHeaders (namespace Namespace , key Key ) (http.Header , error ) {
151151 var headers http.Header
152152 dbKey := compositeKey (namespace , key )
153153 err := s .db .View (func (tx * bbolt.Tx ) error {
@@ -161,7 +161,7 @@ func (s *diskMetaDB) getHeaders(namespace string, key Key) (http.Header, error)
161161 return headers , errors .WithStack (err )
162162}
163163
164- func (s * diskMetaDB ) delete (namespace string , key Key ) error {
164+ func (s * diskMetaDB ) delete (namespace Namespace , key Key ) error {
165165 dbKey := compositeKey (namespace , key )
166166 return errors .WithStack (s .db .Update (func (tx * bbolt.Tx ) error {
167167 ttlBucket := tx .Bucket (ttlBucketName )
@@ -195,19 +195,19 @@ func (s *diskMetaDB) deleteAll(entries []evictEntryKey) error {
195195 }))
196196}
197197
198- func (s * diskMetaDB ) walk (fn func (key Key , namespace string , expiresAt time.Time ) error ) error {
198+ func (s * diskMetaDB ) walk (fn func (key Key , namespace Namespace , expiresAt time.Time ) error ) error {
199199 return errors .WithStack (s .db .View (func (tx * bbolt.Tx ) error {
200200 ttlBucket := tx .Bucket (ttlBucketName )
201201 if ttlBucket == nil {
202202 return nil
203203 }
204204 return ttlBucket .ForEach (func (k , v []byte ) error {
205- var namespace string
205+ var namespace Namespace
206206 var key Key
207207
208208 before , hexKey , found := bytes .Cut (k , []byte ("/" ))
209209 if found {
210- namespace = string (before )
210+ namespace = Namespace (before )
211211 } else {
212212 hexKey = k
213213 }
@@ -251,8 +251,8 @@ func (s *diskMetaDB) close() error {
251251func (s * diskMetaDB ) listNamespaces () ([]string , error ) {
252252 var namespaces []string
253253 s .namespacesCache .Range (func (key , _ any ) bool {
254- if ns , ok := key .(string ); ok {
255- namespaces = append (namespaces , ns )
254+ if ns , ok := key .(Namespace ); ok {
255+ namespaces = append (namespaces , string ( ns ) )
256256 }
257257 return true
258258 })
0 commit comments