@botmesh/core - v2.0.0-alpha.2
    Preparing search index...

    Interface UserDataEntry

    One persisted per-user profile entry — the storage unit behind ctx.user.

    The atomic unit is a TOP-LEVEL key inside a namespace: ctx.user.set('address.city', …) reads and rewrites the whole address entry, while two different top-level keys never touch each other. value is JSON-compatible data (stores persist it as JSON and hand back a fresh copy on every read). userId, namespace and key are compared as EXACT strings: case, accents and leading or trailing whitespace all make a different entry.

    interface UserDataEntry {
        userId: string;
        namespace: string;
        key: string;
        value: unknown;
        expiresAt?: number;
        updatedAt: number;
    }
    Index
    userId: string

    Canonical subject id (the provider-resolved senderId). Opaque.

    namespace: string

    Namespace that groups keys ('default' for ctx.user).

    key: string

    Top-level key inside the namespace (first segment of a dot path).

    value: unknown

    JSON-compatible value.

    expiresAt?: number

    Epoch ms after which the entry counts as absent. undefined = never expires. Always a safe integer when written by ctx.user (BIGINT columns and Redis PX reject fractions).

    updatedAt: number

    Epoch ms of the last write (integer).