Skip to content

Seeding and CLI

The package includes a generic seed framework so each app can provide its own generators and record handlers while reusing a common seed/backfill/status flow.

Build a scenario module

ts
import { createSeedScenario } from "redis-analytics/seed";

export default createSeedScenario({
  init: async () => {
    // initialize stores/services
  },
  createContext(days, scale) {
    const end = new Date();
    const start = new Date(end.getTime() - days * 24 * 60 * 60 * 1000);
    return { range: { start, end }, scale };
  },
  operations: {
    user: async (ctx) => {
      // generate + record user events
      return 100;
    },
    tx: async (ctx) => {
      // generate + record tx events
      return 50;
    },
  },
  backfill: async () => {
    // optional compaction backfill
  },
  status: async () => {
    return { ok: true };
  },
});

Run CLI

bash
redis-analytics-seed seed all --module ./scripts/seed/analytics.scenario.mjs --days 80 --scale 3
redis-analytics-seed seed tx --module ./scripts/seed/analytics.scenario.mjs --days 30 --scale 2
redis-analytics-seed backfill all --module ./scripts/seed/analytics.scenario.mjs
redis-analytics-seed status all --module ./scripts/seed/analytics.scenario.mjs