\section{CRUD műveletek}

\begin{frame}[fragile]{CRUD műveletek}
  \begin{block}{Mi az a CRUD?}
    \begin{itemize}
      \item \textbf{C}reate - Létrehozás
      \item \textbf{R}ead - Olvasás
      \item \textbf{U}pdate - Módosítás
      \item \textbf{D}elete - Törlés
    \end{itemize}
  \end{block}
  
  \vspace{0.5cm}
  
  \begin{block}{Adatbázis műveletek}
    Az alapvető adatbázis műveletek, amelyek minden adatkezelő rendszerben megtalálhatók.
  \end{block}
\end{frame}

\begin{frame}[fragile]{Create - Létrehozás}
  \begin{block}{SQL - INSERT}
    \begin{lstlisting}[language=SQL]
INSERT INTO users (name, email, age)
VALUES ('John Doe', 'john@example.com', 30);
    \end{lstlisting}
  \end{block}
  
  \begin{block}{REST API - POST}
    \begin{lstlisting}[language=JavaScript]
POST /api/users
Content-Type: application/json

{
  "name": "John Doe",
  "email": "john@example.com",
  "age": 30
}
    \end{lstlisting}
  \end{block}
\end{frame}

\begin{frame}[fragile]{Read - Olvasás}
  \begin{block}{SQL - SELECT}
    \begin{lstlisting}[language=SQL]
-- Összes rekord
SELECT * FROM users;

-- Egy adott rekord
SELECT * FROM users WHERE id = 1;

-- Szűrés és rendezés
SELECT name, email FROM users 
WHERE age > 25 
ORDER BY name ASC;
    \end{lstlisting}
  \end{block}
\end{frame}

\begin{frame}[fragile]{Read - REST API}
  \begin{block}{REST API - GET}
    \begin{lstlisting}[language=JavaScript]
// Összes felhasználó
GET /api/users

// Egy adott felhasználó
GET /api/users/1

// Szűrés query paraméterekkel
GET /api/users?age=30&sort=name
    \end{lstlisting}
  \end{block}
\end{frame}

\begin{frame}[fragile]{Update - Módosítás}
  \begin{block}{SQL - UPDATE}
    \begin{lstlisting}[language=SQL]
UPDATE users 
SET email = 'newemail@example.com', age = 31
WHERE id = 1;
    \end{lstlisting}
  \end{block}
  
  \begin{block}{REST API - PUT/PATCH}
    \begin{lstlisting}[language=JavaScript]
// Teljes frissítés
PUT /api/users/1
{ "name": "John Doe", "email": "new@example.com", "age": 31 }

// Részleges frissítés
PATCH /api/users/1
{ "email": "new@example.com" }
    \end{lstlisting}
  \end{block}
\end{frame}

\begin{frame}[fragile]{Delete - Törlés}
  \begin{block}{SQL - DELETE}
    \begin{lstlisting}[language=SQL]
-- Egy adott rekord törlése
DELETE FROM users WHERE id = 1;

-- Minden rekord törlése (óvatosan!)
DELETE FROM users;
    \end{lstlisting}
  \end{block}
  
  \begin{block}{REST API - DELETE}
    \begin{lstlisting}[language=JavaScript]
DELETE /api/users/1
    \end{lstlisting}
  \end{block}
\end{frame}

\begin{frame}{CRUD vs HTTP metódusok}
  \begin{table}
    \begin{tabular}{|l|l|l|l|}
      \hline
      \textbf{CRUD} & \textbf{HTTP} & \textbf{SQL} & \textbf{Leírás} \\
      \hline
      Create & POST & INSERT & Új erőforrás létrehozása \\
      \hline
      Read & GET & SELECT & Erőforrás lekérdezése \\
      \hline
      Update & PUT/PATCH & UPDATE & Erőforrás módosítása \\
      \hline
      Delete & DELETE & DELETE & Erőforrás törlése \\
      \hline
    \end{tabular}
  \end{table}
\end{frame}
