docker
This commit is contained in:
@@ -4,14 +4,16 @@
|
||||
\begin{block}{Data Transfer Object}
|
||||
\begin{itemize}
|
||||
\item Adatok szállítására szolgáló objektum
|
||||
\item Elválasztja az adatbázis sémát a kliens felőli interfésztől
|
||||
\item Elválasztja az adatbázis sémát\\
|
||||
a kliens felőli interfésztől
|
||||
\item Kontroll az átadott adatok felett
|
||||
\item Validáció és transzformáció helye
|
||||
\end{itemize}
|
||||
\end{block}
|
||||
|
||||
\begin{exampleblock}{Példa}
|
||||
Felhasználó entitás tartalmaz jelszó hash-t, de a DTO nem adja ki.
|
||||
Felhasználó entitás tartalmaz jelszó hash-t,\\
|
||||
de a DTO nem adja ki.
|
||||
\end{exampleblock}
|
||||
\end{frame}
|
||||
|
||||
@@ -116,7 +118,7 @@ class UserResponseDTO {
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{DTO használata service-ben}
|
||||
\begin{block}{UserService példa}
|
||||
\begin{block}{UserService példa (1)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
const prisma = require('./prisma');
|
||||
const bcrypt = require('bcrypt');
|
||||
@@ -126,19 +128,26 @@ class UserService {
|
||||
const hashedPassword = await bcrypt.hash(
|
||||
createUserDTO.password, 10
|
||||
); // Jelszó hash-elés
|
||||
\end{lstlisting}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{DTO használata service-ben (folyt.)}
|
||||
\begin{block}{UserService példa (2)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
const user = await prisma.user.create({
|
||||
data: {
|
||||
email: createUserDTO.email,
|
||||
password: hashedPassword,
|
||||
name: createUserDTO.name
|
||||
}// Mentés Prisma-val
|
||||
} // Mentés Prisma-val
|
||||
});
|
||||
\end{lstlisting}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{DTO használata service-ben (folyt.)}
|
||||
\begin{block}{UserService példa folytatás}
|
||||
\begin{block}{UserService példa (3)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
// DTO-vá alakítás visszaadás előtt
|
||||
return UserResponseDTO.fromPrismaUser(user);
|
||||
@@ -147,6 +156,13 @@ class UserService {
|
||||
const users = await prisma.user.findMany();
|
||||
return UserResponseDTO.fromManyPrismaUsers(users);
|
||||
}
|
||||
\end{lstlisting}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{DTO használata service-ben (folyt.)}
|
||||
\begin{block}{UserService példa (4)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
async getUserById(id) {
|
||||
const user = await prisma.user.findUnique({
|
||||
where: { id }
|
||||
@@ -160,7 +176,7 @@ class UserService {
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{Express integráció DTO-val}
|
||||
\begin{block}{REST endpoint}
|
||||
\begin{block}{REST endpoint (POST)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
const express = require('express');
|
||||
const userService = new UserService();
|
||||
@@ -174,6 +190,13 @@ app.post('/api/users', async (req, res) => {
|
||||
res.status(400).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
\end{lstlisting}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{Express integráció DTO-val (folyt.)}
|
||||
\begin{block}{REST endpoint (GET)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
app.get('/api/users', async (req, res) => {
|
||||
const usersDTO = await userService.getAllUsers();
|
||||
res.json(usersDTO);
|
||||
@@ -364,7 +387,7 @@ class UserFilterDTO {
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{Szűrési DTO használata}
|
||||
\begin{block}{Express endpoint szűréssel}
|
||||
\begin{block}{Express endpoint szűréssel (1)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
app.get('/api/users', async (req, res) => {
|
||||
const filterDTO = new UserFilterDTO(req.query);
|
||||
@@ -374,6 +397,13 @@ app.get('/api/users', async (req, res) => {
|
||||
skip: (filterDTO.page - 1) * filterDTO.pageSize,
|
||||
take: filterDTO.pageSize
|
||||
});
|
||||
\end{lstlisting}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{Szűrési DTO használata (folyt.)}
|
||||
\begin{block}{Express endpoint szűréssel (2)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
const total = await prisma.user.count({ where });
|
||||
const result = new PaginatedResponseDTO(
|
||||
UserResponseDTO.fromManyPrismaUsers(users),
|
||||
@@ -386,7 +416,7 @@ app.get('/api/users', async (req, res) => {
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{Mapper függvények}
|
||||
\begin{block}{Alternatív megközelítés - Pure functions // dto/user.mapper.js}
|
||||
\begin{block}{Alternatív megközelítés (1)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
function toUserResponseDTO(user) {
|
||||
return {
|
||||
@@ -398,6 +428,13 @@ function toUserResponseDTO(user) {
|
||||
function toUserResponseDTOs(users) {
|
||||
return users.map(toUserResponseDTO);
|
||||
}
|
||||
\end{lstlisting}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{Mapper függvények (folyt.)}
|
||||
\begin{block}{Alternatív megközelítés (2)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
module.exports = {
|
||||
toUserResponseDTO,
|
||||
toUserResponseDTOs
|
||||
@@ -407,15 +444,22 @@ module.exports = {
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{Mapper használata}
|
||||
\begin{block}{Service-ben}
|
||||
\begin{block}{Service-ben (1)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
const { toUserResponseDTO, toUserResponseDTOs }
|
||||
const { toUserResponseDTO, toUserResponseDTOs }
|
||||
= require('./dto/user.mapper');
|
||||
class UserService {
|
||||
async getAllUsers() {
|
||||
const users = await prisma.user.findMany();
|
||||
return toUserResponseDTOs(users);
|
||||
}
|
||||
\end{lstlisting}
|
||||
\end{block}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]{Mapper használata (folyt.)}
|
||||
\begin{block}{Service-ben (2)}
|
||||
\begin{lstlisting}[language=JavaScript]
|
||||
async getUserById(id) {
|
||||
const user = await prisma.user.findUnique({
|
||||
where: { id }
|
||||
|
||||
Reference in New Issue
Block a user