Immutable command metadata shared by parsing, authorization, and routing.
Preparation normalizes the command and arguments once. Consumers should keep this value instead of rediscovering keys from the raw command payload.
Summary
Functions
Detaches binaries that would retain a larger parent binary.
Types
@type t() :: %Ferricstore.Commands.PreparedCommand{ acl_keys: [binary()], args: [binary()], ast: term(), channel_keys: [binary()], command: binary(), command_keys: [binary()], read_keys: [binary()], routing_keys: [binary()], routing_scope: :none | :keys | :coordinated, transaction_mode: Ferricstore.Commands.TransactionPolicy.mode(), write_keys: [binary()] }
Functions
@spec cross_shard?(t(), FerricStore.Instance.t() | shard_resolver()) :: boolean()
Detaches binaries that would retain a larger parent binary.
Prepared commands normally live only for one request, so preparation keeps decoder sub-binaries without copying. Long-lived consumers such as MULTI queues must call this at their retention boundary.
@spec shard_indexes(t(), FerricStore.Instance.t() | shard_resolver()) :: [term()]