database added
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
\section{Repository}
|
||||
|
||||
\begin{frame}{Repository minta lényege}
|
||||
\begin{block}{Mire jó?}
|
||||
\begin{itemize}
|
||||
\item Elválasztja az adat-hozzáférést az üzleti logikától
|
||||
\item Egységes API az adatok kezelésére
|
||||
\item Könnyebben tesztelhető kód
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{IRepository és konkret repository}
|
||||
\begin{block}{IRepository}
|
||||
\begin{itemize}
|
||||
\item Absztrakt interfész CRUD műveletekkel
|
||||
\item Pl. \texttt{findAll}, \texttt{findById}, \texttt{create}, \texttt{update}, \texttt{delete}
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
\begin{exampleblock}{Konkret repository}
|
||||
Az interfész implementációja (pl. \texttt{UserRepository}).
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{IRepository példa (TypeScript)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
interface IRepository<T> {
|
||||
findAll(): Promise<T[]>;
|
||||
findById(id: number): Promise<T | null>;
|
||||
create(data: T): Promise<T>;
|
||||
update(id: number, data: Partial<T>): Promise<T>;
|
||||
delete(id: number): Promise<void>;
|
||||
}
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{Prisma repository példa}
|
||||
\begin{block}{Prisma Client}
|
||||
A Prisma Client kezeli a kapcsolatot és az SQL generálást.
|
||||
\end{block}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
class UserRepository implements IRepository<User> {
|
||||
constructor(private prisma: PrismaClient) {}
|
||||
findAll() {
|
||||
return this.prisma.user.findMany();
|
||||
}
|
||||
findById(id: number) {
|
||||
return this.prisma.user.findUnique({ where: { id } });
|
||||
}
|
||||
|
||||
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{Prisma repository példa folytatás}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
create(data: User) {
|
||||
return this.prisma.user.create({ data });
|
||||
}
|
||||
|
||||
update(id: number, data: Partial<User>) {
|
||||
return this.prisma.user.update({ where: { id }, data });
|
||||
}
|
||||
|
||||
async delete(id: number) {
|
||||
await this.prisma.user.delete({ where: { id } });
|
||||
}
|
||||
}
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}{Mikor hasznos?}
|
||||
\begin{itemize}
|
||||
\item Ha több adatforrás van (SQL, API, cache)
|
||||
\item Ha szeretnél változtatható adat-hozzáférést
|
||||
\item Ha szükség van mock-olható IRepositories-re tesztekhez
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
Reference in New Issue
Block a user