Matterway
    Preparing search index...

    Function initStorage

    • Initialize a storage instance for a given context, name, and scope

      Type Parameters

      • T extends Record<string, any>

        Type of the data to be stored.

      Parameters

      • ctx: Context

        The context for which storage should be initialized.

      • name: string

        Name for the storage instance.

      • scope: "user" | "org" | "skill"

        Desired storage scope.

      Returns {
          name: string;
          path: string;
          get: <K extends string>(key: K) => Promise<T[K]>;
          getAll: () => Promise<T>;
          set: <K extends string>(key: K, val: T[K]) => Promise<void>;
          setAll: (val: T) => Promise<void>;
          update: <K extends string>(
              key: K,
              callback: (data: T[K]) => Promise<T[K]>,
          ) => Promise<void>;
          updateAll: (callback: (data: T) => Promise<T>) => Promise<void>;
          remove: <K extends string>(key: K) => Promise<void>;
          removeAll: () => Promise<void>;
      }

      A storage instance.

      • name: string
      • path: string
      • get: <K extends string>(key: K) => Promise<T[K]>

        Get a value from storage

        const userName = await userStorage.get('name');
        
      • getAll: () => Promise<T>

        Get all values from storage

        const allUserData = await userStorage.getAll();
        
      • set: <K extends string>(key: K, val: T[K]) => Promise<void>

        Set a value in storage

        await userStorage.set('name', 'Mr. Anderson');
        
      • setAll: (val: T) => Promise<void>

        Set all values in storage

        await userStorage.setAll(async { name: 'Neo', updated: true });
        
      • update: <K extends string>(
            key: K,
            callback: (data: T[K]) => Promise<T[K]>,
        ) => Promise<void>

        Update a value in storage

        await userStorage.set('name', async (prevName) => `Dr. ${prevName}`);
        
      • updateAll: (callback: (data: T) => Promise<T>) => Promise<void>

        Update all values in storage

        await userStorage.setAll(async (data) => ({ ...data, updated: true }));
        
      • remove: <K extends string>(key: K) => Promise<void>

        Remove a key and its value from storage

        await userStorage.remove('name');
        
      • removeAll: () => Promise<void>

        Remove all data from storage

        await userStorage.removeAll();
        
      const userStorage = initStorage<UserData>(ctx, 'userData', 'user');