// Code generated by ndpgen. 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 host import ( "encoding/json" "errors" "github.com/navidrome/navidrome/plugins/pdk/go/pdk" ) // cache_setstring is the host function provided by Navidrome. // //go:wasmimport extism:host/user cache_setstring func cache_setstring(uint64) 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) 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) 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 // 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 type cacheSetStringRequest struct { Key string `json:"key"` Value string `json:"value"` TtlSeconds int64 `json:"ttlSeconds"` } type cacheGetStringRequest struct { Key string `json:"key"` } type cacheGetStringResponse struct { Value string `json:"value,omitempty"` Exists bool `json:"exists,omitempty"` Error string `json:"error,omitempty"` } type cacheSetIntRequest struct { Key string `json:"key"` Value int64 `json:"value"` TtlSeconds int64 `json:"ttlSeconds"` } type cacheGetIntRequest struct { Key string `json:"key"` } type cacheGetIntResponse struct { Value int64 `json:"value,omitempty"` Exists bool `json:"exists,omitempty"` Error string `json:"error,omitempty"` } type cacheSetFloatRequest struct { Key string `json:"key"` Value float64 `json:"value"` TtlSeconds int64 `json:"ttlSeconds"` } type cacheGetFloatRequest struct { Key string `json:"key"` } type cacheGetFloatResponse struct { Value float64 `json:"value,omitempty"` Exists bool `json:"exists,omitempty"` Error string `json:"error,omitempty"` } type cacheSetBytesRequest struct { Key string `json:"key"` Value []byte `json:"value"` TtlSeconds int64 `json:"ttlSeconds"` } type cacheGetBytesRequest struct { Key string `json:"key"` } type cacheGetBytesResponse struct { Value []byte `json:"value,omitempty"` Exists bool `json:"exists,omitempty"` Error string `json:"error,omitempty"` } type cacheHasRequest struct { Key string `json:"key"` } type cacheHasResponse struct { Exists bool `json:"exists,omitempty"` Error string `json:"error,omitempty"` } type cacheRemoveRequest struct { Key string `json:"key"` } // 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 { // Marshal request to JSON req := cacheSetStringRequest{ Key: key, Value: value, TtlSeconds: ttlSeconds, } reqBytes, err := json.Marshal(req) if err != nil { return err } reqMem := pdk.AllocateBytes(reqBytes) defer reqMem.Free() // Call the host function responsePtr := cache_setstring(reqMem.Offset()) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) responseBytes := responseMem.ReadBytes() // Parse error-only response var response struct { Error string `json:"error,omitempty"` } if err := json.Unmarshal(responseBytes, &response); err != nil { return err } if response.Error != "" { return errors.New(response.Error) } 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) (string, bool, error) { // Marshal request to JSON req := cacheGetStringRequest{ Key: key, } reqBytes, err := json.Marshal(req) if err != nil { return "", false, err } reqMem := pdk.AllocateBytes(reqBytes) defer reqMem.Free() // Call the host function responsePtr := cache_getstring(reqMem.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 "", false, err } // Convert Error field to Go error if response.Error != "" { return "", false, errors.New(response.Error) } return response.Value, response.Exists, 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 { // Marshal request to JSON req := cacheSetIntRequest{ Key: key, Value: value, TtlSeconds: ttlSeconds, } reqBytes, err := json.Marshal(req) if err != nil { return err } reqMem := pdk.AllocateBytes(reqBytes) defer reqMem.Free() // Call the host function responsePtr := cache_setint(reqMem.Offset()) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) responseBytes := responseMem.ReadBytes() // Parse error-only response var response struct { Error string `json:"error,omitempty"` } if err := json.Unmarshal(responseBytes, &response); err != nil { return err } if response.Error != "" { return errors.New(response.Error) } 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) (int64, bool, error) { // Marshal request to JSON req := cacheGetIntRequest{ Key: key, } reqBytes, err := json.Marshal(req) if err != nil { return 0, false, err } reqMem := pdk.AllocateBytes(reqBytes) defer reqMem.Free() // Call the host function responsePtr := cache_getint(reqMem.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 0, false, err } // Convert Error field to Go error if response.Error != "" { return 0, false, errors.New(response.Error) } return response.Value, response.Exists, 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 { // Marshal request to JSON req := cacheSetFloatRequest{ Key: key, Value: value, TtlSeconds: ttlSeconds, } reqBytes, err := json.Marshal(req) if err != nil { return err } reqMem := pdk.AllocateBytes(reqBytes) defer reqMem.Free() // Call the host function responsePtr := cache_setfloat(reqMem.Offset()) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) responseBytes := responseMem.ReadBytes() // Parse error-only response var response struct { Error string `json:"error,omitempty"` } if err := json.Unmarshal(responseBytes, &response); err != nil { return err } if response.Error != "" { return errors.New(response.Error) } 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) (float64, bool, error) { // Marshal request to JSON req := cacheGetFloatRequest{ Key: key, } reqBytes, err := json.Marshal(req) if err != nil { return 0, false, err } reqMem := pdk.AllocateBytes(reqBytes) defer reqMem.Free() // Call the host function responsePtr := cache_getfloat(reqMem.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 0, false, err } // Convert Error field to Go error if response.Error != "" { return 0, false, errors.New(response.Error) } return response.Value, response.Exists, 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 { // Marshal request to JSON req := cacheSetBytesRequest{ Key: key, Value: value, TtlSeconds: ttlSeconds, } reqBytes, err := json.Marshal(req) if err != nil { return err } reqMem := pdk.AllocateBytes(reqBytes) defer reqMem.Free() // Call the host function responsePtr := cache_setbytes(reqMem.Offset()) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) responseBytes := responseMem.ReadBytes() // Parse error-only response var response struct { Error string `json:"error,omitempty"` } if err := json.Unmarshal(responseBytes, &response); err != nil { return err } if response.Error != "" { return errors.New(response.Error) } 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) ([]byte, bool, error) { // Marshal request to JSON req := cacheGetBytesRequest{ Key: key, } reqBytes, err := json.Marshal(req) if err != nil { return nil, false, err } reqMem := pdk.AllocateBytes(reqBytes) defer reqMem.Free() // Call the host function responsePtr := cache_getbytes(reqMem.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, false, err } // Convert Error field to Go error if response.Error != "" { return nil, false, errors.New(response.Error) } return response.Value, response.Exists, 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) (bool, error) { // Marshal request to JSON req := cacheHasRequest{ Key: key, } reqBytes, err := json.Marshal(req) if err != nil { return false, err } reqMem := pdk.AllocateBytes(reqBytes) defer reqMem.Free() // Call the host function responsePtr := cache_has(reqMem.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 false, err } // Convert Error field to Go error if response.Error != "" { return false, errors.New(response.Error) } return response.Exists, 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 { // Marshal request to JSON req := cacheRemoveRequest{ Key: key, } reqBytes, err := json.Marshal(req) if err != nil { return err } reqMem := pdk.AllocateBytes(reqBytes) defer reqMem.Free() // Call the host function responsePtr := cache_remove(reqMem.Offset()) // Read the response from memory responseMem := pdk.FindMemory(responsePtr) responseBytes := responseMem.ReadBytes() // Parse error-only response var response struct { Error string `json:"error,omitempty"` } if err := json.Unmarshal(responseBytes, &response); err != nil { return err } if response.Error != "" { return errors.New(response.Error) } return nil }