"use client"; import { movies } from "@/lib/db/schema"; import { createContext, FC, use, useState } from "react"; type Movie = typeof movies.$inferSelect; type GlobalStore = { movies: Movie[]; addMovie: (movie: Movie) => void; deleteMovie: (id: number) => void; updateMovie: (id: number, movie: Partial) => void; }; const globalStore = createContext({ movies: [], addMovie: () => {}, deleteMovie: () => {}, updateMovie: () => {}, }); type Props = { children: React.ReactNode; initialMovies: GlobalStore["movies"]; }; export const GlobalStoreProvider: FC = ({ children, initialMovies }) => { const [movies, setMovies] = useState(initialMovies); const addMovie = async (movie: Movie) => { if (movies.find((m) => m.id === movie.id)) return; setMovies((prev) => [...prev, movie]); }; const deleteMovie = async (id: number) => { setMovies((prev) => prev.filter((m) => m.id !== id)); }; const updateMovie = async (id: number, movie: Partial) => { setMovies((prev) => prev.map((m) => (m.id === id ? { ...m, ...movie } : m)) ); }; return ( {children} ); }; export const useGlobalStore = () => { return use(globalStore); };