import { create } from 'zustand';
import { persist } from 'zustand/middleware';

export interface CronHistoryEntry {
  id: string;
  expression: string;
  label?: string;
  savedAt: number;
}

interface CronStore {
  expression: string;
  history: CronHistoryEntry[];
  setExpression: (expr: string) => void;
  addToHistory: (expr: string, label?: string) => void;
  removeFromHistory: (id: string) => void;
  clearHistory: () => void;
}

export const useCronStore = create<CronStore>()(
  persist(
    (set) => ({
      expression: '0 9 * * 1-5',
      history: [],

      setExpression: (expression) => set({ expression }),

      addToHistory: (expression, label) =>
        set((state) => {
          const entry: CronHistoryEntry = {
            id: `${Date.now()}-${Math.random().toString(36).slice(2)}`,
            expression,
            label,
            savedAt: Date.now(),
          };
          const filtered = state.history.filter((h) => h.expression !== expression);
          return { history: [entry, ...filtered].slice(0, 30) };
        }),

      removeFromHistory: (id) =>
        set((state) => ({ history: state.history.filter((h) => h.id !== id) })),

      clearHistory: () => set({ history: [] }),
    }),
    { name: 'kit-cron-v1' },
  ),
);
