Fix: UserManagement brak nazw (name w db.json), ProfileView hardcoded Anna (resolver pobiera dane po id)

This commit is contained in:
Krzysztof Cieślik
2026-06-21 07:27:57 +02:00
parent f1eb1a7b20
commit 01c7a7c594
2 changed files with 25 additions and 10 deletions

View File

@@ -2,30 +2,38 @@
"users": [ "users": [
{ {
"id": "u1", "id": "u1",
"name": "Admin User",
"email": "admin@reservations.dev", "email": "admin@reservations.dev",
"password": "Admin1234!", "password": "Admin1234!",
"role": "admin", "role": "admin",
"joinedAt": "2023-06-01",
"avatarUrl": "https://i.pravatar.cc/150?u=admin" "avatarUrl": "https://i.pravatar.cc/150?u=admin"
}, },
{ {
"id": "u2", "id": "u2",
"name": "Anna Kowalski",
"email": "anna.kowalski@example.com", "email": "anna.kowalski@example.com",
"password": "Client1234!", "password": "Client1234!",
"role": "client", "role": "client",
"joinedAt": "2024-01-15",
"avatarUrl": "https://i.pravatar.cc/150?u=anna" "avatarUrl": "https://i.pravatar.cc/150?u=anna"
}, },
{ {
"id": "u3", "id": "u3",
"name": "Marek Nowak",
"email": "marek.nowak@example.com", "email": "marek.nowak@example.com",
"password": "Client1234!", "password": "Client1234!",
"role": "client", "role": "client",
"joinedAt": "2024-02-20",
"avatarUrl": "https://i.pravatar.cc/150?u=marek" "avatarUrl": "https://i.pravatar.cc/150?u=marek"
}, },
{ {
"id": "u4", "id": "u4",
"name": "Julia Wisniewska",
"email": "julia.wisniewska@example.com", "email": "julia.wisniewska@example.com",
"password": "Client1234!", "password": "Client1234!",
"role": "client", "role": "client",
"joinedAt": "2024-03-10",
"avatarUrl": "https://i.pravatar.cc/150?u=julia" "avatarUrl": "https://i.pravatar.cc/150?u=julia"
} }
], ],

View File

@@ -17,6 +17,7 @@ import { SchemaLink } from '@apollo/client/link/schema';
import { makeExecutableSchema } from '@graphql-tools/schema'; import { makeExecutableSchema } from '@graphql-tools/schema';
// Importowanie głównego komponentu aplikacji // Importowanie głównego komponentu aplikacji
import App from './App.jsx'; import App from './App.jsx';
import { API_URL } from './config.js';
// Instancja z konfiguracją react-query // Instancja z konfiguracją react-query
const queryClient = new QueryClient({ const queryClient = new QueryClient({
@@ -84,16 +85,22 @@ const apolloClient = new ApolloClient({
resolvers: { resolvers: {
// Logika resolverów dla zapytań i mutacji GraphQL // Logika resolverów dla zapytań i mutacji GraphQL
Query: { Query: {
// Jeśli fronted pyta o profil użytkownika, zwracamy dane zdefiniowane w kodzie oraz url awatara // Pobiera profil użytkownika z REST API po id, liczy jego rezerwacje
userProfile: (_, { id }) => ({ userProfile: async (_, { id }) => {
id, const [u, reservations] = await Promise.all([
name: 'Anna Kowalski', fetch(`${API_URL}/users/${id}`).then((r) => r.json()),
email: 'anna.kowalski@example.com', fetch(`${API_URL}/reservations?userId=${id}`).then((r) => r.json()),
role: 'client', ]);
joinedAt: '2024-01-15', return {
reservationsCount: 3, id: u.id,
avatarUrl: `https://i.pravatar.cc/150?u=${id}`, name: u.name ?? u.email.split('@')[0],
}), email: u.email,
role: u.role,
joinedAt: u.joinedAt ?? '2024-01-15',
reservationsCount: reservations.length,
avatarUrl: u.avatarUrl,
};
},
// Jeśli fronted pyta o recenzje dla danego serwisu, filtrujemy recenzje w pamięci według serviceId // Jeśli fronted pyta o recenzje dla danego serwisu, filtrujemy recenzje w pamięci według serviceId
serviceReviews: (_, { serviceId }) => reviewStore.filter((r) => r.serviceId === serviceId), serviceReviews: (_, { serviceId }) => reviewStore.filter((r) => r.serviceId === serviceId),
// Jeśli fronted pyta o recenzje danego użytkownika, filtrujemy recenzje w pamięci według userId // Jeśli fronted pyta o recenzje danego użytkownika, filtrujemy recenzje w pamięci według userId