// Code generated by hostgen. DO NOT EDIT. // // This file contains client wrappers for the Cache host service. // It is intended for use in Navidrome plugins built with TinyGo. // //go:build wasip1 package main import ( "encoding/json" "errors" "github.com/extism/go-pdk" ) // cache_setstring is the host function provided by Navidrome. // //go:wasmimport extism:host/user cache_setstring func cache_setstring(uint64, uint64, int64) uint64 // cache_getstring is the host function provided by Navidrome. // //go:wasmimport extism:host/user cache_getstring func cache_getstring(uint64) uint64 // cache_setint is the host function provided by Navidrome. // //go:wasmimport extism:host/user cache_setint func cache_setint(uint64, int64, int64) uint64 // cache_getint is the host function provided by Navidrome. // //go:wasmimport extism:host/user cache_getint func cache_getint(uint64) uint64 // cache_setfloat is the host function provided by Navidrome. // //go:wasmimport extism:host/user cache_setfloat func cache_setfloat(uint64, float64, int64) uint64 // cache_getfloat is the host function provided by Navidrome. // //go:wasmimport extism:host/user cache_getfloat func cache_getfloat(uint64) uint64 // cache_setbytes is the host function provided by Navidrome. // //go:wasmimport extism:host/user cache_setbytes func cache_setbytes(uint64, uint64, int64) uint64 // cache_getbytes is the host function provided by Navidrome. // //go:wasmimport extism:host/user cache_getbytes func cache_getbytes(uint64) uint64 // cache_has is the host function provided by Navidrome. // //go:wasmimport extism:host/user cache_has func cache_has(uint64) uint64 // cache_remove is the host function provided by Navidrome. // //go:wasmimport extism:host/user cache_remove func cache_remove(uint64) uint64 // CacheGetStringResponse is the response type for Cache.GetString. type CacheGetStringResponse struct { Value string `json:"value,omitempty"` Exists bool `json:"exists,omitempty"` Error string `json:"error,omitempty"` } // CacheGetIntResponse is the response type for Cache.GetInt. type CacheGetIntResponse struct { Value int64 `json:"value,omitempty"` Exists bool `json:"exists,omitempty"` Error string `json:"error,omitempty"` } // CacheGetFloatResponse is the response type for Cache.GetFloat. type CacheGetFloatResponse struct { Value float64 `json:"value,omitempty"` Exists bool `json:"exists,omitempty"` Error string `json:"error,omitempty"` } // CacheGetBytesResponse is the response type for Cache.GetBytes. type CacheGetBytesResponse struct { Value []byte `json:"value,omitempty"` Exists bool `json:"exists,omitempty"` Error string `json:"error,omitempty"` } // CacheHasResponse is the response type for Cache.Has. type CacheHasResponse struct { Exists bool `json:"exists,omitempty"` Error string `json:"error,omitempty"` } // CacheSetString calls the cache_setstring host function. // SetString stores a string value in the cache. // // Parameters: // - key: The cache key (will be namespaced with plugin ID) // - value: The string value to store // - ttlSeconds: Time-to-live in seconds (0 uses default of 24 hours) // // Returns an error if the operation fails. func CacheSetString(key string, value string, ttlSeconds int64) error { keyMem := pdk.AllocateString(key) defer keyMem.Free() valueMem := pdk.AllocateString(value) defer valueMem.Free() // Call the host function responsePtr := cache_setstring(keyMem.Offset(), valueMem.Offset(), ttlSeconds) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) errStr := string(responseMem.ReadBytes()) if errStr != "" { return errors.New(errStr) } return nil } // CacheGetString calls the cache_getstring host function. // GetString retrieves a string value from the cache. // // Parameters: // - key: The cache key (will be namespaced with plugin ID) // // Returns the value and whether the key exists. If the key doesn't exist // or the stored value is not a string, exists will be false. func CacheGetString(key string) (*CacheGetStringResponse, error) { keyMem := pdk.AllocateString(key) defer keyMem.Free() // Call the host function responsePtr := cache_getstring(keyMem.Offset()) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) responseBytes := responseMem.ReadBytes() // Parse the response var response CacheGetStringResponse if err := json.Unmarshal(responseBytes, &response); err != nil { return nil, err } return &response, nil } // CacheSetInt calls the cache_setint host function. // SetInt stores an integer value in the cache. // // Parameters: // - key: The cache key (will be namespaced with plugin ID) // - value: The integer value to store // - ttlSeconds: Time-to-live in seconds (0 uses default of 24 hours) // // Returns an error if the operation fails. func CacheSetInt(key string, value int64, ttlSeconds int64) error { keyMem := pdk.AllocateString(key) defer keyMem.Free() // Call the host function responsePtr := cache_setint(keyMem.Offset(), value, ttlSeconds) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) errStr := string(responseMem.ReadBytes()) if errStr != "" { return errors.New(errStr) } return nil } // CacheGetInt calls the cache_getint host function. // GetInt retrieves an integer value from the cache. // // Parameters: // - key: The cache key (will be namespaced with plugin ID) // // Returns the value and whether the key exists. If the key doesn't exist // or the stored value is not an integer, exists will be false. func CacheGetInt(key string) (*CacheGetIntResponse, error) { keyMem := pdk.AllocateString(key) defer keyMem.Free() // Call the host function responsePtr := cache_getint(keyMem.Offset()) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) responseBytes := responseMem.ReadBytes() // Parse the response var response CacheGetIntResponse if err := json.Unmarshal(responseBytes, &response); err != nil { return nil, err } return &response, nil } // CacheSetFloat calls the cache_setfloat host function. // SetFloat stores a float value in the cache. // // Parameters: // - key: The cache key (will be namespaced with plugin ID) // - value: The float value to store // - ttlSeconds: Time-to-live in seconds (0 uses default of 24 hours) // // Returns an error if the operation fails. func CacheSetFloat(key string, value float64, ttlSeconds int64) error { keyMem := pdk.AllocateString(key) defer keyMem.Free() // Call the host function responsePtr := cache_setfloat(keyMem.Offset(), value, ttlSeconds) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) errStr := string(responseMem.ReadBytes()) if errStr != "" { return errors.New(errStr) } return nil } // CacheGetFloat calls the cache_getfloat host function. // GetFloat retrieves a float value from the cache. // // Parameters: // - key: The cache key (will be namespaced with plugin ID) // // Returns the value and whether the key exists. If the key doesn't exist // or the stored value is not a float, exists will be false. func CacheGetFloat(key string) (*CacheGetFloatResponse, error) { keyMem := pdk.AllocateString(key) defer keyMem.Free() // Call the host function responsePtr := cache_getfloat(keyMem.Offset()) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) responseBytes := responseMem.ReadBytes() // Parse the response var response CacheGetFloatResponse if err := json.Unmarshal(responseBytes, &response); err != nil { return nil, err } return &response, nil } // CacheSetBytes calls the cache_setbytes host function. // SetBytes stores a byte slice in the cache. // // Parameters: // - key: The cache key (will be namespaced with plugin ID) // - value: The byte slice to store // - ttlSeconds: Time-to-live in seconds (0 uses default of 24 hours) // // Returns an error if the operation fails. func CacheSetBytes(key string, value []byte, ttlSeconds int64) error { keyMem := pdk.AllocateString(key) defer keyMem.Free() valueMem := pdk.AllocateBytes(value) defer valueMem.Free() // Call the host function responsePtr := cache_setbytes(keyMem.Offset(), valueMem.Offset(), ttlSeconds) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) errStr := string(responseMem.ReadBytes()) if errStr != "" { return errors.New(errStr) } return nil } // CacheGetBytes calls the cache_getbytes host function. // GetBytes retrieves a byte slice from the cache. // // Parameters: // - key: The cache key (will be namespaced with plugin ID) // // Returns the value and whether the key exists. If the key doesn't exist // or the stored value is not a byte slice, exists will be false. func CacheGetBytes(key string) (*CacheGetBytesResponse, error) { keyMem := pdk.AllocateString(key) defer keyMem.Free() // Call the host function responsePtr := cache_getbytes(keyMem.Offset()) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) responseBytes := responseMem.ReadBytes() // Parse the response var response CacheGetBytesResponse if err := json.Unmarshal(responseBytes, &response); err != nil { return nil, err } return &response, nil } // CacheHas calls the cache_has host function. // Has checks if a key exists in the cache. // // Parameters: // - key: The cache key (will be namespaced with plugin ID) // // Returns true if the key exists and has not expired. func CacheHas(key string) (*CacheHasResponse, error) { keyMem := pdk.AllocateString(key) defer keyMem.Free() // Call the host function responsePtr := cache_has(keyMem.Offset()) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) responseBytes := responseMem.ReadBytes() // Parse the response var response CacheHasResponse if err := json.Unmarshal(responseBytes, &response); err != nil { return nil, err } return &response, nil } // CacheRemove calls the cache_remove host function. // Remove deletes a value from the cache. // // Parameters: // - key: The cache key (will be namespaced with plugin ID) // // Returns an error if the operation fails. Does not return an error if the key doesn't exist. func CacheRemove(key string) error { keyMem := pdk.AllocateString(key) defer keyMem.Free() // Call the host function responsePtr := cache_remove(keyMem.Offset()) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) errStr := string(responseMem.ReadBytes()) if errStr != "" { return errors.New(errStr) } return nil }