init + api use
This commit is contained in:
70
stubs/api/data/chains.json
Normal file
70
stubs/api/data/chains.json
Normal file
@@ -0,0 +1,70 @@
|
||||
[
|
||||
{
|
||||
"_id": "607f1f77bcf86cd799439021",
|
||||
"id": "607f1f77bcf86cd799439021",
|
||||
"name": "Основы JavaScript",
|
||||
"tasks": [
|
||||
{
|
||||
"_id": "507f1f77bcf86cd799439011",
|
||||
"id": "507f1f77bcf86cd799439011",
|
||||
"title": "Реализовать сортировку массива",
|
||||
"description": "# Задание: Сортировка массива\n\nНапишите функцию `sortArray(arr)`, которая сортирует массив чисел по возрастанию.",
|
||||
"createdAt": "2024-11-01T10:00:00.000Z",
|
||||
"updatedAt": "2024-11-01T10:00:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "507f1f77bcf86cd799439015",
|
||||
"id": "507f1f77bcf86cd799439015",
|
||||
"title": "Валидация формы",
|
||||
"description": "# Задание: Валидация email\n\nНапишите функцию для валидации email адреса.",
|
||||
"createdAt": "2024-11-05T11:00:00.000Z",
|
||||
"updatedAt": "2024-11-05T11:00:00.000Z"
|
||||
}
|
||||
],
|
||||
"createdAt": "2024-11-01T09:00:00.000Z",
|
||||
"updatedAt": "2024-11-05T12:00:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "607f1f77bcf86cd799439022",
|
||||
"id": "607f1f77bcf86cd799439022",
|
||||
"name": "React разработка",
|
||||
"tasks": [
|
||||
{
|
||||
"_id": "507f1f77bcf86cd799439013",
|
||||
"id": "507f1f77bcf86cd799439013",
|
||||
"title": "Компонент React формы",
|
||||
"description": "# Задание: Форма регистрации\n\nСоздайте компонент React для формы регистрации.",
|
||||
"createdAt": "2024-11-03T09:15:00.000Z",
|
||||
"updatedAt": "2024-11-03T09:15:00.000Z"
|
||||
}
|
||||
],
|
||||
"createdAt": "2024-11-03T08:00:00.000Z",
|
||||
"updatedAt": "2024-11-03T09:30:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "607f1f77bcf86cd799439023",
|
||||
"id": "607f1f77bcf86cd799439023",
|
||||
"name": "Backend разработка",
|
||||
"tasks": [
|
||||
{
|
||||
"_id": "507f1f77bcf86cd799439012",
|
||||
"id": "507f1f77bcf86cd799439012",
|
||||
"title": "Создать REST API endpoint",
|
||||
"description": "# Задание: REST API для пользователей\n\nСоздайте REST API endpoint для получения списка пользователей.",
|
||||
"createdAt": "2024-11-02T12:30:00.000Z",
|
||||
"updatedAt": "2024-11-02T12:30:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "507f1f77bcf86cd799439014",
|
||||
"id": "507f1f77bcf86cd799439014",
|
||||
"title": "SQL запрос с JOIN",
|
||||
"description": "# Задание: SQL запрос\n\nНапишите SQL запрос для выборки всех заказов пользователя.",
|
||||
"createdAt": "2024-11-04T14:20:00.000Z",
|
||||
"updatedAt": "2024-11-04T14:20:00.000Z"
|
||||
}
|
||||
],
|
||||
"createdAt": "2024-11-02T11:00:00.000Z",
|
||||
"updatedAt": "2024-11-04T15:00:00.000Z"
|
||||
}
|
||||
]
|
||||
|
||||
21
stubs/api/data/stats.json
Normal file
21
stubs/api/data/stats.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"users": 8,
|
||||
"tasks": 5,
|
||||
"chains": 3,
|
||||
"submissions": {
|
||||
"total": 8,
|
||||
"accepted": 5,
|
||||
"rejected": 3,
|
||||
"pending": 0,
|
||||
"inProgress": 0
|
||||
},
|
||||
"averageCheckTimeMs": 3275,
|
||||
"queue": {
|
||||
"queueLength": 0,
|
||||
"waiting": 0,
|
||||
"inProgress": 0,
|
||||
"maxConcurrency": 5,
|
||||
"currentlyProcessing": 0
|
||||
}
|
||||
}
|
||||
|
||||
203
stubs/api/data/submissions.json
Normal file
203
stubs/api/data/submissions.json
Normal file
@@ -0,0 +1,203 @@
|
||||
[
|
||||
{
|
||||
"_id": "sub001",
|
||||
"id": "sub001",
|
||||
"user": {
|
||||
"_id": "user001",
|
||||
"id": "user001",
|
||||
"nickname": "alex_student",
|
||||
"createdAt": "2024-10-15T08:30:00.000Z"
|
||||
},
|
||||
"task": {
|
||||
"_id": "507f1f77bcf86cd799439011",
|
||||
"id": "507f1f77bcf86cd799439011",
|
||||
"title": "Реализовать сортировку массива",
|
||||
"description": "# Задание: Сортировка массива\n\nНапишите функцию `sortArray(arr)`, которая сортирует массив чисел по возрастанию.",
|
||||
"createdAt": "2024-11-01T10:00:00.000Z",
|
||||
"updatedAt": "2024-11-01T10:00:00.000Z"
|
||||
},
|
||||
"result": "function sortArray(arr) {\n return arr.sort((a, b) => a - b);\n}",
|
||||
"status": "needs_revision",
|
||||
"queueId": "q001",
|
||||
"feedback": "Ваше решение изменяет исходный массив. Необходимо создать копию массива перед сортировкой. Используйте spread оператор или Array.from().",
|
||||
"submittedAt": "2024-11-01T15:30:00.000Z",
|
||||
"checkedAt": "2024-11-01T15:30:03.500Z",
|
||||
"attemptNumber": 1
|
||||
},
|
||||
{
|
||||
"_id": "sub002",
|
||||
"id": "sub002",
|
||||
"user": {
|
||||
"_id": "user001",
|
||||
"id": "user001",
|
||||
"nickname": "alex_student",
|
||||
"createdAt": "2024-10-15T08:30:00.000Z"
|
||||
},
|
||||
"task": {
|
||||
"_id": "507f1f77bcf86cd799439011",
|
||||
"id": "507f1f77bcf86cd799439011",
|
||||
"title": "Реализовать сортировку массива",
|
||||
"description": "# Задание: Сортировка массива",
|
||||
"createdAt": "2024-11-01T10:00:00.000Z",
|
||||
"updatedAt": "2024-11-01T10:00:00.000Z"
|
||||
},
|
||||
"result": "function sortArray(arr) {\n return [...arr].sort((a, b) => a - b);\n}",
|
||||
"status": "accepted",
|
||||
"queueId": "q002",
|
||||
"feedback": "Отлично! Ваше решение корректно создаёт копию массива и сортирует её. Сложность O(n log n) соответствует требованиям.",
|
||||
"submittedAt": "2024-11-01T15:45:00.000Z",
|
||||
"checkedAt": "2024-11-01T15:45:02.800Z",
|
||||
"attemptNumber": 2
|
||||
},
|
||||
{
|
||||
"_id": "sub003",
|
||||
"id": "sub003",
|
||||
"user": {
|
||||
"_id": "user002",
|
||||
"id": "user002",
|
||||
"nickname": "maria_dev",
|
||||
"createdAt": "2024-10-16T10:15:00.000Z"
|
||||
},
|
||||
"task": {
|
||||
"_id": "507f1f77bcf86cd799439013",
|
||||
"id": "507f1f77bcf86cd799439013",
|
||||
"title": "Компонент React формы",
|
||||
"description": "# Задание: Форма регистрации",
|
||||
"createdAt": "2024-11-03T09:15:00.000Z",
|
||||
"updatedAt": "2024-11-03T09:15:00.000Z"
|
||||
},
|
||||
"result": "import React, { useState } from 'react';\n\nfunction RegistrationForm() {\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [errors, setErrors] = useState({});\n\n const handleSubmit = (e) => {\n e.preventDefault();\n const newErrors = {};\n if (!email.includes('@')) newErrors.email = 'Invalid email';\n if (password.length < 6) newErrors.password = 'Too short';\n if (password !== confirmPassword) newErrors.confirmPassword = 'Passwords do not match';\n \n if (Object.keys(newErrors).length === 0) {\n console.log('Form submitted');\n } else {\n setErrors(newErrors);\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <input value={email} onChange={e => setEmail(e.target.value)} />\n {errors.email && <span>{errors.email}</span>}\n <input type=\"password\" value={password} onChange={e => setPassword(e.target.value)} />\n {errors.password && <span>{errors.password}</span>}\n <input type=\"password\" value={confirmPassword} onChange={e => setConfirmPassword(e.target.value)} />\n {errors.confirmPassword && <span>{errors.confirmPassword}</span>}\n <button type=\"submit\">Register</button>\n </form>\n );\n}",
|
||||
"status": "accepted",
|
||||
"queueId": "q003",
|
||||
"feedback": "Превосходно! Использованы controlled components, есть валидация, обработка ошибок и правильное управление state. Всё соответствует требованиям.",
|
||||
"submittedAt": "2024-11-03T16:20:00.000Z",
|
||||
"checkedAt": "2024-11-03T16:20:04.200Z",
|
||||
"attemptNumber": 1
|
||||
},
|
||||
{
|
||||
"_id": "sub004",
|
||||
"id": "sub004",
|
||||
"user": {
|
||||
"_id": "user003",
|
||||
"id": "user003",
|
||||
"nickname": "ivan_coder",
|
||||
"createdAt": "2024-10-17T14:20:00.000Z"
|
||||
},
|
||||
"task": {
|
||||
"_id": "507f1f77bcf86cd799439012",
|
||||
"id": "507f1f77bcf86cd799439012",
|
||||
"title": "Создать REST API endpoint",
|
||||
"description": "# Задание: REST API для пользователей",
|
||||
"createdAt": "2024-11-02T12:30:00.000Z",
|
||||
"updatedAt": "2024-11-02T12:30:00.000Z"
|
||||
},
|
||||
"result": "app.get('/api/users', async (req, res) => {\n const users = await User.find();\n res.json({ users });\n});",
|
||||
"status": "needs_revision",
|
||||
"queueId": "q004",
|
||||
"feedback": "В решении отсутствует пагинация, обработка ошибок и валидация параметров. Необходимо добавить параметры page и limit, обернуть код в try-catch и валидировать входные данные.",
|
||||
"submittedAt": "2024-11-02T17:00:00.000Z",
|
||||
"checkedAt": "2024-11-02T17:00:03.100Z",
|
||||
"attemptNumber": 1
|
||||
},
|
||||
{
|
||||
"_id": "sub005",
|
||||
"id": "sub005",
|
||||
"user": {
|
||||
"_id": "user004",
|
||||
"id": "user004",
|
||||
"nickname": "olga_js",
|
||||
"createdAt": "2024-10-18T09:00:00.000Z"
|
||||
},
|
||||
"task": {
|
||||
"_id": "507f1f77bcf86cd799439015",
|
||||
"id": "507f1f77bcf86cd799439015",
|
||||
"title": "Валидация формы",
|
||||
"description": "# Задание: Валидация email",
|
||||
"createdAt": "2024-11-05T11:00:00.000Z",
|
||||
"updatedAt": "2024-11-05T11:00:00.000Z"
|
||||
},
|
||||
"result": "function validateEmail(email) {\n if (!email || email.trim() === '') return false;\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n}",
|
||||
"status": "accepted",
|
||||
"queueId": "q005",
|
||||
"feedback": "Отлично! Функция обрабатывает все edge cases: пустая строка, отсутствие @, отсутствие домена. Regex валидация корректная.",
|
||||
"submittedAt": "2024-11-05T14:10:00.000Z",
|
||||
"checkedAt": "2024-11-05T14:10:02.500Z",
|
||||
"attemptNumber": 1
|
||||
},
|
||||
{
|
||||
"_id": "sub006",
|
||||
"id": "sub006",
|
||||
"user": {
|
||||
"_id": "user005",
|
||||
"id": "user005",
|
||||
"nickname": "dmitry_react",
|
||||
"createdAt": "2024-10-20T11:45:00.000Z"
|
||||
},
|
||||
"task": {
|
||||
"_id": "507f1f77bcf86cd799439011",
|
||||
"id": "507f1f77bcf86cd799439011",
|
||||
"title": "Реализовать сортировку массива",
|
||||
"description": "# Задание: Сортировка массива",
|
||||
"createdAt": "2024-11-01T10:00:00.000Z",
|
||||
"updatedAt": "2024-11-01T10:00:00.000Z"
|
||||
},
|
||||
"result": "function sortArray(arr) {\n const result = [];\n for (let i = 0; i < arr.length; i++) {\n for (let j = i + 1; j < arr.length; j++) {\n if (arr[i] > arr[j]) {\n [arr[i], arr[j]] = [arr[j], arr[i]];\n }\n }\n result.push(arr[i]);\n }\n return result;\n}",
|
||||
"status": "needs_revision",
|
||||
"queueId": "q006",
|
||||
"feedback": "Ваше решение использует bubble sort с сложностью O(n²), что не соответствует требованиям. Необходимо использовать алгоритм с сложностью O(n log n), например, встроенный метод sort().",
|
||||
"submittedAt": "2024-11-01T18:30:00.000Z",
|
||||
"checkedAt": "2024-11-01T18:30:03.900Z",
|
||||
"attemptNumber": 1
|
||||
},
|
||||
{
|
||||
"_id": "sub007",
|
||||
"id": "sub007",
|
||||
"user": {
|
||||
"_id": "user006",
|
||||
"id": "user006",
|
||||
"nickname": "anna_frontend",
|
||||
"createdAt": "2024-10-22T16:30:00.000Z"
|
||||
},
|
||||
"task": {
|
||||
"_id": "507f1f77bcf86cd799439014",
|
||||
"id": "507f1f77bcf86cd799439014",
|
||||
"title": "SQL запрос с JOIN",
|
||||
"description": "# Задание: SQL запрос",
|
||||
"createdAt": "2024-11-04T14:20:00.000Z",
|
||||
"updatedAt": "2024-11-04T14:20:00.000Z"
|
||||
},
|
||||
"result": "SELECT users.name, users.email, orders.id as order_id, orders.created_at,\n products.name as product_name, products.price, order_items.quantity\nFROM users\nINNER JOIN orders ON users.id = orders.user_id\nINNER JOIN order_items ON orders.id = order_items.order_id\nINNER JOIN products ON order_items.product_id = products.id\nWHERE orders.status = 'active'\nORDER BY orders.created_at DESC;",
|
||||
"status": "accepted",
|
||||
"queueId": "q007",
|
||||
"feedback": "Отличный запрос! Использованы правильные JOIN'ы, добавлена фильтрация по активным заказам и сортировка по дате. Всё соответствует требованиям.",
|
||||
"submittedAt": "2024-11-04T20:15:00.000Z",
|
||||
"checkedAt": "2024-11-04T20:15:02.700Z",
|
||||
"attemptNumber": 1
|
||||
},
|
||||
{
|
||||
"_id": "sub008",
|
||||
"id": "sub008",
|
||||
"user": {
|
||||
"_id": "user007",
|
||||
"id": "user007",
|
||||
"nickname": "sergey_backend",
|
||||
"createdAt": "2024-10-25T13:00:00.000Z"
|
||||
},
|
||||
"task": {
|
||||
"_id": "507f1f77bcf86cd799439012",
|
||||
"id": "507f1f77bcf86cd799439012",
|
||||
"title": "Создать REST API endpoint",
|
||||
"description": "# Задание: REST API для пользователей",
|
||||
"createdAt": "2024-11-02T12:30:00.000Z",
|
||||
"updatedAt": "2024-11-02T12:30:00.000Z"
|
||||
},
|
||||
"result": "app.get('/api/users', async (req, res) => {\n try {\n const page = parseInt(req.query.page) || 1;\n const limit = parseInt(req.query.limit) || 10;\n \n if (page < 1 || limit < 1 || limit > 100) {\n return res.status(400).json({ error: 'Invalid pagination parameters' });\n }\n \n const skip = (page - 1) * limit;\n const users = await User.find().skip(skip).limit(limit);\n const total = await User.countDocuments();\n \n res.json({\n users,\n total,\n page,\n limit\n });\n } catch (error) {\n res.status(500).json({ error: 'Internal server error' });\n }\n});",
|
||||
"status": "accepted",
|
||||
"queueId": "q008",
|
||||
"feedback": "Превосходная работа! Есть пагинация, валидация параметров, обработка ошибок. Код чистый и следует best practices.",
|
||||
"submittedAt": "2024-11-02T21:30:00.000Z",
|
||||
"checkedAt": "2024-11-02T21:30:04.100Z",
|
||||
"attemptNumber": 1
|
||||
}
|
||||
]
|
||||
|
||||
72
stubs/api/data/tasks.json
Normal file
72
stubs/api/data/tasks.json
Normal file
@@ -0,0 +1,72 @@
|
||||
[
|
||||
{
|
||||
"_id": "507f1f77bcf86cd799439011",
|
||||
"id": "507f1f77bcf86cd799439011",
|
||||
"title": "Реализовать сортировку массива",
|
||||
"description": "# Задание: Сортировка массива\n\nНапишите функцию `sortArray(arr)`, которая сортирует массив чисел по возрастанию.\n\n## Требования:\n\n- Функция должна принимать массив чисел\n- Возвращать отсортированный массив\n- Не изменять исходный массив\n\n## Пример:\n\n```javascript\nconst arr = [5, 2, 8, 1, 9];\nconst sorted = sortArray(arr);\nconsole.log(sorted); // [1, 2, 5, 8, 9]\n```",
|
||||
"hiddenInstructions": "Проверь, чтобы сложность алгоритма была не хуже O(n log n). Не принимай bubble sort или простые O(n²) решения. Убедись, что исходный массив не изменяется.",
|
||||
"creator": {
|
||||
"sub": "teacher-123",
|
||||
"preferred_username": "ivanov_teacher",
|
||||
"email": "ivanov@example.com"
|
||||
},
|
||||
"createdAt": "2024-11-01T10:00:00.000Z",
|
||||
"updatedAt": "2024-11-01T10:00:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "507f1f77bcf86cd799439012",
|
||||
"id": "507f1f77bcf86cd799439012",
|
||||
"title": "Создать REST API endpoint",
|
||||
"description": "# Задание: REST API для пользователей\n\nСоздайте REST API endpoint для получения списка пользователей.\n\n## Требования:\n\n- Метод: GET\n- Путь: /api/users\n- Должна быть пагинация\n- Обработка ошибок\n- Валидация параметров\n\n## Пример ответа:\n\n```json\n{\n \"users\": [...],\n \"total\": 100,\n \"page\": 1,\n \"limit\": 10\n}\n```",
|
||||
"hiddenInstructions": "Обязательна пагинация, обработка ошибок и валидация параметров. Если чего-то не хватает - укажи в feedback.",
|
||||
"creator": {
|
||||
"sub": "teacher-123",
|
||||
"preferred_username": "ivanov_teacher",
|
||||
"email": "ivanov@example.com"
|
||||
},
|
||||
"createdAt": "2024-11-02T12:30:00.000Z",
|
||||
"updatedAt": "2024-11-02T12:30:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "507f1f77bcf86cd799439013",
|
||||
"id": "507f1f77bcf86cd799439013",
|
||||
"title": "Компонент React формы",
|
||||
"description": "# Задание: Форма регистрации\n\nСоздайте компонент React для формы регистрации.\n\n## Требования:\n\n- Поля: email, password, confirmPassword\n- Валидация на стороне клиента\n- Использование controlled components\n- Обработка submit\n\n## Бонус:\n\n- TypeScript типы\n- Показ ошибок валидации",
|
||||
"hiddenInstructions": "Обязательна валидация на стороне клиента, использование controlled components, и правильное управление state. Если используются uncontrolled components - отправь на доработку.",
|
||||
"creator": {
|
||||
"sub": "teacher-456",
|
||||
"preferred_username": "petrova_teacher",
|
||||
"email": "petrova@example.com"
|
||||
},
|
||||
"createdAt": "2024-11-03T09:15:00.000Z",
|
||||
"updatedAt": "2024-11-03T09:15:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "507f1f77bcf86cd799439014",
|
||||
"id": "507f1f77bcf86cd799439014",
|
||||
"title": "SQL запрос с JOIN",
|
||||
"description": "# Задание: SQL запрос\n\nНапишите SQL запрос для выборки всех заказов пользователя вместе с информацией о товарах.\n\n## Структура таблиц:\n\n- users (id, name, email)\n- orders (id, user_id, created_at)\n- order_items (id, order_id, product_id, quantity)\n- products (id, name, price)\n\n## Требования:\n\n- Использовать JOIN\n- Отсортировать по дате создания заказа\n- Показать только активные заказы",
|
||||
"creator": {
|
||||
"sub": "teacher-123",
|
||||
"preferred_username": "ivanov_teacher",
|
||||
"email": "ivanov@example.com"
|
||||
},
|
||||
"createdAt": "2024-11-04T14:20:00.000Z",
|
||||
"updatedAt": "2024-11-04T14:20:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "507f1f77bcf86cd799439015",
|
||||
"id": "507f1f77bcf86cd799439015",
|
||||
"title": "Валидация формы",
|
||||
"description": "# Задание: Валидация email\n\nНапишите функцию для валидации email адреса.\n\n## Требования:\n\n- Проверка формата email\n- Возвращает true/false\n- Обработка edge cases\n\n## Примеры:\n\n```javascript\nvalidateEmail('test@example.com') // true\nvalidateEmail('invalid-email') // false\nvalidateEmail('') // false\n```",
|
||||
"hiddenInstructions": "Проверь, что функция обрабатывает edge cases: пустая строка, нет @, нет домена, множественные @. Если не все случаи покрыты - отправь на доработку.",
|
||||
"creator": {
|
||||
"sub": "teacher-456",
|
||||
"preferred_username": "petrova_teacher",
|
||||
"email": "petrova@example.com"
|
||||
},
|
||||
"createdAt": "2024-11-05T11:00:00.000Z",
|
||||
"updatedAt": "2024-11-05T11:00:00.000Z"
|
||||
}
|
||||
]
|
||||
|
||||
51
stubs/api/data/users.json
Normal file
51
stubs/api/data/users.json
Normal file
@@ -0,0 +1,51 @@
|
||||
[
|
||||
{
|
||||
"_id": "user001",
|
||||
"id": "user001",
|
||||
"nickname": "alex_student",
|
||||
"createdAt": "2024-10-15T08:30:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "user002",
|
||||
"id": "user002",
|
||||
"nickname": "maria_dev",
|
||||
"createdAt": "2024-10-16T10:15:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "user003",
|
||||
"id": "user003",
|
||||
"nickname": "ivan_coder",
|
||||
"createdAt": "2024-10-17T14:20:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "user004",
|
||||
"id": "user004",
|
||||
"nickname": "olga_js",
|
||||
"createdAt": "2024-10-18T09:00:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "user005",
|
||||
"id": "user005",
|
||||
"nickname": "dmitry_react",
|
||||
"createdAt": "2024-10-20T11:45:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "user006",
|
||||
"id": "user006",
|
||||
"nickname": "anna_frontend",
|
||||
"createdAt": "2024-10-22T16:30:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "user007",
|
||||
"id": "user007",
|
||||
"nickname": "sergey_backend",
|
||||
"createdAt": "2024-10-25T13:00:00.000Z"
|
||||
},
|
||||
{
|
||||
"_id": "user008",
|
||||
"id": "user008",
|
||||
"nickname": "elena_fullstack",
|
||||
"createdAt": "2024-10-28T10:00:00.000Z"
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user