Passer au contenu principal

Documentation Index

Fetch the complete documentation index at: https://kubo-47e69177.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Products Cart Module

Objectif

Isoler les lectures/ecritures du panier par feature tout en gardant une invalidation coherente.

Keys et tags par feature

features/cart/query-keys.ts
import { createFeatureKeys, createFeatureTags } from "@zapaction/core";

export const cartKeys = createFeatureKeys("cart", {
  all: () => [],
  byUser: (userId: string) => ["by-user", userId]
});

export const cartTags = createFeatureTags("cart", {
  byUser: (userId: string) => ["by-user", userId]
});

Contrats d’action

features/cart/actions.ts
import { defineAction } from "@zapaction/core";
import { z } from "zod";

export const addToCart = defineAction({
  input: z.object({ userId: z.string(), productId: z.string(), qty: z.number().min(1) }),
  output: z.object({ ok: z.literal(true) }),
  tags: ["cart"],
  handler: async () => ({ ok: true })
});