-
Notifications
You must be signed in to change notification settings - Fork 0
Add smart cache-keys registry #52
Copy link
Copy link
Open
Labels
Good to haveenhancementNew feature or requestNew feature or requesthigh-priorityImportant but not blockingImportant but not blockingnew featurerefactoring
Description
Summary
A utility to infer cache keys from query/mutation names. This follows REST-like conventions to automatically generate cache keys based on the operation name.
Key Inference Rules
| Pattern | Example Input | Generated Keys |
|---|---|---|
| List | getUsers |
['getUsers', 'users:list'] |
| Get by ID | getUser |
['getUser', 'user'] |
| Get by field | getUserById |
['getUserById', 'user', 'user:byId'] |
| Create | createUser |
['getUsers', 'users'] (invalidation) |
| Update | updateUser |
['getUser', 'users'] (invalidation) |
| Delete | deleteUser |
['getUser', 'users'] (invalidation) |
API Design
import { inferCacheKeys, inferInvalidateKeys } from '@deessejs/functions'
// For queries - generate cache keys
const keys = inferCacheKeys('getUsers') // ['getUsers', 'users:list']
const keys = inferCacheKeys('getUser') // ['getUser', 'user']
const keys = inferCacheKeys('getUserById') // ['getUserById', 'user', 'user:byId']
// For mutations - generate invalidation keys
const invalidateKeys = inferInvalidateKeys('createUser') // ['getUsers', 'users']
const invalidateKeys = inferInvalidateKeys('updateUser') // ['getUser', 'users']
const invalidateKeys = inferInvalidateKeys('deleteUser') // ['getUser', 'users']Implementation Notes
- Pure utility functions, no state
- Works with both queries and mutations
- Used internally by hooks, can also be used manually
- Customizable prefix/suffix mappings possible
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Good to haveenhancementNew feature or requestNew feature or requesthigh-priorityImportant but not blockingImportant but not blockingnew featurerefactoring