database added

This commit is contained in:
magdo
2026-02-08 00:51:17 +01:00
parent 863f76934c
commit 6afdef6a30
10 changed files with 1736 additions and 0 deletions
+79
View File
@@ -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}