import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import { VarroaMeasurement } from '../../types';

interface VarroaState {
    measurements: VarroaMeasurement[];
    currentMeasurement: VarroaMeasurement | null;
    isLoading: boolean;
    error: string | null;
}

const initialState: VarroaState = {
    measurements: [],
    currentMeasurement: null,
    isLoading: false,
    error: null,
};

const varroaSlice = createSlice({
    name: 'varroa',
    initialState,
    reducers: {
        setMeasurements: (state, action: PayloadAction<VarroaMeasurement[]>) => {
            state.measurements = action.payload;
        },
        addMeasurement: (state, action: PayloadAction<VarroaMeasurement>) => {
            state.measurements.push(action.payload);
        },
        setCurrentMeasurement: (state, action: PayloadAction<VarroaMeasurement | null>) => {
            state.currentMeasurement = action.payload;
        },
        setLoading: (state, action: PayloadAction<boolean>) => {
            state.isLoading = action.payload;
        },
        setError: (state, action: PayloadAction<string | null>) => {
            state.error = action.payload;
        },
    },
});

export const { 
    setMeasurements, 
    addMeasurement, 
    setCurrentMeasurement, 
    setLoading, 
    setError 
} = varroaSlice.actions;

export default varroaSlice.reducer;
