Skip to content

Add smart cache-keys registry #52

@AliiiBenn

Description

@AliiiBenn

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions