Files
2026-02-08 00:51:17 +01:00

65 lines
1.7 KiB
TeX

\section{Mapper}
\begin{frame}{Mapper minta szerepe}
\begin{block}{Mi a mapper?}
\begin{itemize}
\item Átalakítás domain objektumok és DTO-k között
\item Elválasztja az adatformátumot az üzleti modelltől
\item Központi helyen tartja az átalakítás logikáját
\end{itemize}
\end{block}
\end{frame}
\begin{frame}{Miért hasznos?}
\begin{itemize}
\item Csökkenti a duplikált átalakításokat
\item Stabil API-szerződések (DTO-k) a változó domain mellett
\item Tesztelhető, moduláris és újrafelhasználható kód
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Egyszerű mapper példa}
\begin{lstlisting}[language=JavaScript]
// Domain objektum
const user = {
id: 1, name: "John Doe",
email: "john@example.com", passwordHash: "..."
};
// Mapper függvény
const toUserDto = (u) => ({
id: u.id, name: u.name, email: u.email
});
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]{Kétirányú mapper}
\begin{lstlisting}[language=JavaScript]
const toUserEntity = (dto) => ({
id: dto.id ?? undefined,
name: dto.name,
email: dto.email
});
\end{lstlisting}
\begin{block}{Megjegyzés}
Írhatsz külön mappert bejövő és kimenő adatokra.
\end{block}
\end{frame}
\begin{frame}{Mapper és repository}
\begin{itemize}
\item Repository a tárolást kezeli
\item Mapper az objektumok formátumát kezeli
\item Két külön felelősségi kör
\end{itemize}
\end{frame}
\begin{frame}{Jó gyakorlatok}
\begin{itemize}
\item Ne másolj át érzékeny mezőket (pl. jelszó)
\item Tartsd egy helyen az átalakításokat
\item Használj tiszta függvényeket és kis helper-eket
\end{itemize}
\end{frame}