From d41abc02da43dbb03eaa675123be227b02b7dfff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B0=D1=81=D1=82=D0=B0=D1=81=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=A8=D0=B8=D0=BD=D1=8F=D0=B5=D0=B2=D0=B0?= Date: Thu, 19 Dec 2024 03:21:45 +0300 Subject: [PATCH] fix import --- backend/requests.rest | 1128 +++++++++++++++++ .../im_ex_repo/im_ex_repo.py | 22 +- docker-compose.yml | 2 + 3 files changed, 1148 insertions(+), 4 deletions(-) create mode 100644 backend/requests.rest diff --git a/backend/requests.rest b/backend/requests.rest new file mode 100644 index 0000000..de1bab7 --- /dev/null +++ b/backend/requests.rest @@ -0,0 +1,1128 @@ +@authToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2NzYzNjQ3ZmM1Zjg2YWVlOTdhZjcyZDQiLCJyb2xlIjoid29ya2VyIiwiZXhwIjoxNzM0NTY5MTE1fQ.pRJaSBMtaNdb2XNIxr2JtQgNCnVbmResqWhbMgTVLiE + +### +POST http://localhost:8000/api/auth/token/ +Content-Type: application/json + +{ + "email": "worker@example.com", + "password": "worker_123" +} + +### +GET http://localhost:8000/api/data/export +Authorization: Bearer {{authToken}} + +### +POST http://localhost:8000/api/data/import +Authorization: Bearer {{authToken}} +Content-Type: application/json + +{ + "workers": [ + { + "email": "worker@example.com", + "password": "$2b$12$6osWoQyXJQCuUKdn76sUweeHcZ0FiIux9M3htL0LghHQbGr3TQZe.", + "created_at": "2024-11-28T15:39:13.050000", + "updated_at": "2024-11-28T15:39:13.050000", + "name": "Антон", + "surname": "Петров", + "phone": "+71234567890", + "jobTitle": "Главный работник", + "date": "2024-11-28T15:39:13.050000", + "image": "http://0.0.0.0:8080/api/resources/images/workers/c0999ff2f2c730678f0356603e424516b674ccb0d599b87dedb7a9a1bc89646f/1.png", + "_id": "67488ea1e0b092cfb2fe6911" + } + ], + "clients": [ + { + "email": "client_1@example.com", + "password": "$2b$12$.RzxPWac/e4RISJEnw69YuqMw8PLmBACZdGWZPeLAIw6M.IiWT4rq", + "created_at": "2024-12-18T14:05:22.519000", + "updated_at": "2024-12-18T14:10:29.924000", + "name": "Иван", + "surname": "Петров", + "phone": "+79161234567", + "image": "http://0.0.0.0:8080/api/resources/images/clients/d89b750bd5a875c166119bf523fa5dabd5b3e2d263ea63b68aa26cd0411af1f3/1.png", + "_id": "6762d6a2f6292fe72b752b5e" + }, + { + "email": "client_2@example.com", + "password": "$2b$12$pWggz5PL/5gtaRrS56nNPupZfyKB/DCcNznf/.au4KCoEhZLpGLnm", + "created_at": "2024-12-18T14:06:17.859000", + "updated_at": "2024-12-18T14:10:53.606000", + "name": "Ольга", + "surname": "Смирнова", + "phone": "+79991234567", + "image": "http://0.0.0.0:8080/api/resources/images/clients/4d1732f83c592083c1d3c77ec3b45ec1c950f7c974c938fc1affaed81cf6f084/1.png", + "_id": "6762d6d9f6292fe72b752b5f" + }, + { + "email": "client_3@example.com", + "password": "$2b$12$Ujrol9/uLzk8tV6rn5S.w.mAJJFhjO1OtO.IwpT5WRk1g/XZt41s.", + "created_at": "2024-12-18T14:06:35.724000", + "updated_at": "2024-12-18T14:11:20.467000", + "name": "Алексей", + "surname": "Васильев", + "phone": "+79271234567", + "image": "http://0.0.0.0:8080/api/resources/images/clients/263dc3e1633465f5cc6cfc17daec3627764a43cdbba3ebcbe9eca18aa2acb105/1.png", + "_id": "6762d6ebf6292fe72b752b60" + } + ], + "tools": [ + { + "name": "Молоток-гвоздодер Kraftool", + "dailyPrice": 40.0, + "totalPrice": 850.0, + "images": [ + "http://0.0.0.0:8080/api/resources/images/tools/5d25e3d8154a07b5edc4ed1c9c09930494980b1942f1d979b867c4391baf1e2f/1.png", + "http://0.0.0.0:8080/api/resources/images/tools/5d25e3d8154a07b5edc4ed1c9c09930494980b1942f1d979b867c4391baf1e2f/2.png" + ], + "features": { + "Вес": "500 г", + "Материал": "Закаленная сталь", + "Ручка": "Эргономичная резиновая", + "Назначение": "Работа с гвоздями" + }, + "rating": 3.0, + "reviews_count": 2, + "ordersNumber": 0, + "category": "Ручной инструмент", + "type": "Молоток", + "description": "Многофункциональный молоток с гвоздодером. Подходит для легких строительных работ и ремонта.", + "created_at": "2024-12-18T14:26:18.458000", + "updated_at": "2024-12-18T14:26:18.458000", + "_id": "6762db8ad5595612f0a21207" + }, + { + "name": "Молоток слесарный Matrix", + "dailyPrice": 50.0, + "totalPrice": 700.0, + "images": [], + "features": { + "Вес": "1000 г", + "Материал": "Сталь с антикоррозийным покрытием", + "Ручка": "Двухкомпонентная ручка", + "Назначение": "Слесарные работы" + }, + "rating": 4.5, + "reviews_count": 2, + "ordersNumber": 0, + "category": "Ручной инструмент", + "type": "Молоток", + "description": "Тяжелый молоток для выполнения слесарных работ. Удобная двухкомпонентная ручка снижает вибрацию при работе.", + "created_at": "2024-12-18T14:27:51.127000", + "updated_at": "2024-12-18T14:27:51.127000", + "_id": "6762dbe7d5595612f0a21208" + }, + { + "name": "Молоток столярный Stanley", + "dailyPrice": 30.0, + "totalPrice": 500.0, + "images": [], + "features": { + "Вес": "300 г", + "Материал": "Углеродистая сталь", + "Ручка": "Деревянная", + "Назначение": "Столярные работы" + }, + "rating": 4.0, + "reviews_count": 1, + "ordersNumber": 0, + "category": "Ручной инструмент", + "type": "Молоток", + "description": "Легкий молоток, идеально подходящий для столярных и плотницких работ. Деревянная ручка обеспечивает комфортный захват.", + "created_at": "2024-12-18T14:27:59.391000", + "updated_at": "2024-12-18T14:27:59.391000", + "_id": "6762dbefd5595612f0a21209" + }, + { + "name": "Отвертка крестовая PH2 Vira", + "dailyPrice": 20.0, + "totalPrice": 150.0, + "images": [], + "features": { + "Размер": "PH2", + "Материал": "Хром-ванадиевая сталь", + "Ручка": "Эргономичная резиновая", + "Назначение": "Работа с шурупами" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Ручной инструмент", + "type": "Отвертка", + "description": "Качественная крестовая отвертка для сборки мебели и ремонта. Удобная ручка обеспечивает надежный хват.", + "created_at": "2024-12-18T14:28:24.878000", + "updated_at": "2024-12-18T14:28:24.878000", + "_id": "6762dc08d5595612f0a2120a" + }, + { + "name": "Отвертка плоская Stayer", + "dailyPrice": 15.0, + "totalPrice": 120.0, + "images": [], + "features": { + "Размер": "4 мм", + "Материал": "Закаленная сталь", + "Ручка": "Пластиковая", + "Назначение": "Работа с плоскими крепежами" + }, + "rating": 4.0, + "reviews_count": 1, + "ordersNumber": 0, + "category": "Ручной инструмент", + "type": "Отвертка", + "description": "Прочная плоская отвертка для мелких бытовых и профессиональных работ. Подходит для любых стандартных крепежей.", + "created_at": "2024-12-18T14:28:37.612000", + "updated_at": "2024-12-18T14:28:37.612000", + "_id": "6762dc15d5595612f0a2120b" + }, + { + "name": "Отвертка с набором бит Kraftool", + "dailyPrice": 50.0, + "totalPrice": 950.0, + "images": [], + "features": { + "Биты": "12 штук", + "Материал": "Хром-ванадиевая сталь", + "Ручка": "Противоскользящая", + "Назначение": "Многофункциональная работа" + }, + "rating": 5.0, + "reviews_count": 1, + "ordersNumber": 0, + "category": "Ручной инструмент", + "type": "Отвертка", + "description": "Отвертка с комплектом сменных бит, идеальна для универсального использования. Надежный инструмент для дома и работы.", + "created_at": "2024-12-18T14:28:55.614000", + "updated_at": "2024-12-18T14:28:55.614000", + "_id": "6762dc27d5595612f0a2120c" + }, + { + "name": "Ключ рожковый 10x12 мм Sparta", + "dailyPrice": 25.0, + "totalPrice": 200.0, + "images": [], + "features": { + "Размер": "10x12 мм", + "Материал": "Хром-ванадиевая сталь", + "Покрытие": "Антикоррозийное", + "Назначение": "Работа с болтами и гайками" + }, + "rating": 5.0, + "reviews_count": 1, + "ordersNumber": 0, + "category": "Ручной инструмент", + "type": "Рожковый ключ", + "description": "Универсальный рожковый ключ для работы с крепежами среднего размера. Прочный и удобный в использовании.", + "created_at": "2024-12-18T14:29:08.978000", + "updated_at": "2024-12-18T14:29:08.978000", + "_id": "6762dc34d5595612f0a2120d" + }, + { + "name": "Ключ комбинированный 13 мм Stanley", + "dailyPrice": 30.0, + "totalPrice": 350.0, + "images": [], + "features": { + "Размер": "13 мм", + "Материал": "Хром-ванадиевая сталь", + "Форма": "Рожковая и кольцевая", + "Назначение": "Профессиональный инструмент" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Ручной инструмент", + "type": "Рожковый ключ", + "description": "Комбинированный ключ с двумя рабочими поверхностями. Подходит для профессионального использования.", + "created_at": "2024-12-18T14:29:14.567000", + "updated_at": "2024-12-18T14:29:14.567000", + "_id": "6762dc3ad5595612f0a2120e" + }, + { + "name": "Ключ рожковый 17x19 мм Kraftool", + "dailyPrice": 35.0, + "totalPrice": 450.0, + "images": [], + "features": { + "Размер": "17x19 мм", + "Материал": "Инструментальная сталь", + "Покрытие": "Матовое", + "Назначение": "Работа с крупными крепежами" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Ручной инструмент", + "type": "Рожковый ключ", + "description": "Прочный и надежный рожковый ключ для работы с крупногабаритными крепежами. Подходит для автосервиса и строительства.", + "created_at": "2024-12-18T14:29:20.463000", + "updated_at": "2024-12-18T14:29:20.463000", + "_id": "6762dc40d5595612f0a2120f" + }, + { + "name": "Дрель ударная Bosch GSB 13 RE", + "dailyPrice": 300.0, + "totalPrice": 6500.0, + "images": [], + "features": { + "Мощность": "600 Вт", + "Частота вращения": "2800 об/мин", + "Режим": "Ударный", + "Назначение": "Сверление и бурение" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Электроинструмент", + "type": "Дрель", + "description": "Компактная ударная дрель от Bosch для работы с бетоном, деревом и металлом. Эргономичная ручка для комфортной работы.", + "created_at": "2024-12-18T14:29:29.832000", + "updated_at": "2024-12-18T14:29:29.832000", + "_id": "6762dc49d5595612f0a21210" + }, + { + "name": "Дрель DeWalt DWD024", + "dailyPrice": 350.0, + "totalPrice": 7500.0, + "images": [], + "features": { + "Мощность": "700 Вт", + "Частота вращения": "2800 об/мин", + "Вес": "1.8 кг", + "Назначение": "Профессиональная работа" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Электроинструмент", + "type": "Дрель", + "description": "Мощная дрель от DeWalt с высокой производительностью. Подходит для интенсивного использования на стройке.", + "created_at": "2024-12-18T14:29:34.365000", + "updated_at": "2024-12-18T14:29:34.365000", + "_id": "6762dc4ed5595612f0a21211" + }, + { + "name": "Дрель-шуруповерт Makita DF330DWE", + "dailyPrice": 400.0, + "totalPrice": 9500.0, + "images": [ + "http://0.0.0.0:8080/api/resources/images/tools/d56b0d31b3a81077bb50df1f37a30f94fe23ebdbef02d6c6e5d4ef3385279c5c/1.png", + "http://0.0.0.0:8080/api/resources/images/tools/d56b0d31b3a81077bb50df1f37a30f94fe23ebdbef02d6c6e5d4ef3385279c5c/2.png" + ], + "features": { + "Аккумулятор": "10.8 В", + "Частота вращения": "1300 об/мин", + "Тип": "Аккумуляторный", + "Назначение": "Сборка мебели" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Электроинструмент", + "type": "Дрель", + "description": "Аккумуляторная дрель-шуруповерт от Makita. Идеальный инструмент для сборки мебели и мелких работ.", + "created_at": "2024-12-18T14:29:40.820000", + "updated_at": "2024-12-18T14:29:40.820000", + "_id": "6762dc54d5595612f0a21212" + }, + { + "name": "Угловая шлифмашина Bosch GWS 7-125", + "dailyPrice": 400.0, + "totalPrice": 6000.0, + "images": [], + "features": { + "Мощность": "720 Вт", + "Диаметр диска": "125 мм", + "Частота вращения": "11000 об/мин", + "Назначение": "Шлифовка и резка" + }, + "rating": 5.0, + "reviews_count": 1, + "ordersNumber": 0, + "category": "Электроинструмент", + "type": "Болгарка", + "description": "Компактная болгарка для точной резки и шлифовки металла и камня. Эргономичный дизайн обеспечивает комфортную работу.", + "created_at": "2024-12-18T14:29:59.731000", + "updated_at": "2024-12-18T14:29:59.731000", + "_id": "6762dc67d5595612f0a21213" + }, + { + "name": "Болгарка Makita GA5030", + "dailyPrice": 350.0, + "totalPrice": 5500.0, + "images": [], + "features": { + "Мощность": "720 Вт", + "Диаметр диска": "125 мм", + "Частота вращения": "11000 об/мин", + "Вес": "1.8 кг" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Электроинструмент", + "type": "Болгарка", + "description": "Удобная и мощная углошлифовальная машина, предназначенная для различных строительных и ремонтных работ.", + "created_at": "2024-12-18T14:30:07.428000", + "updated_at": "2024-12-18T14:30:07.428000", + "_id": "6762dc6fd5595612f0a21214" + }, + { + "name": "Угловая шлифмашина DeWalt DWE4051", + "dailyPrice": 500.0, + "totalPrice": 7200.0, + "images": [], + "features": { + "Мощность": "800 Вт", + "Диаметр диска": "115 мм", + "Частота вращения": "11000 об/мин", + "Защита": "Электронная защита двигателя" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Электроинструмент", + "type": "Болгарка", + "description": "Мощная болгарка с компактными размерами, идеальная для профессиональных работ с металлом и бетоном.", + "created_at": "2024-12-18T14:30:27.499000", + "updated_at": "2024-12-18T14:30:27.499000", + "_id": "6762dc83d5595612f0a21215" + }, + { + "name": "Перфоратор Bosch GBH 2-26 DRE", + "dailyPrice": 500.0, + "totalPrice": 11000.0, + "images": [], + "features": { + "Мощность": "800 Вт", + "Режимы работы": "3 (сверление, долбление, комбинированный)", + "Сила удара": "2.7 Дж", + "Назначение": "Работа с бетоном и кирпичом" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Электроинструмент", + "type": "Перфоратор", + "description": "Перфоратор для тяжелых строительных работ. Обеспечивает мощное долбление и высокую производительность.", + "created_at": "2024-12-18T14:30:48.504000", + "updated_at": "2024-12-18T14:30:48.504000", + "_id": "6762dc98d5595612f0a21216" + }, + { + "name": "Перфоратор Makita HR2470", + "dailyPrice": 450.0, + "totalPrice": 9500.0, + "images": [], + "features": { + "Мощность": "780 Вт", + "Режимы работы": "3 (сверление, долбление, комбинированный)", + "Сила удара": "2.4 Дж", + "Назначение": "Универсальные строительные работы" + }, + "rating": 4.0, + "reviews_count": 1, + "ordersNumber": 0, + "category": "Электроинструмент", + "type": "Перфоратор", + "description": "Универсальный перфоратор от Makita для работы с бетоном, кирпичом и металлом. Надежный инструмент для строительных задач.", + "created_at": "2024-12-18T14:30:57.622000", + "updated_at": "2024-12-18T14:30:57.622000", + "_id": "6762dca1d5595612f0a21217" + }, + { + "name": "Перфоратор DeWalt D25133K", + "dailyPrice": 550.0, + "totalPrice": 12500.0, + "images": [], + "features": { + "Мощность": "800 Вт", + "Сила удара": "2.9 Дж", + "Режимы работы": "3 (сверление, долбление, комбинированный)", + "Вес": "2.6 кг" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Электроинструмент", + "type": "Перфоратор", + "description": "Мощный перфоратор DeWalt для интенсивного использования. Обеспечивает высокую производительность и комфорт в работе.", + "created_at": "2024-12-18T14:31:01.918000", + "updated_at": "2024-12-18T14:31:01.918000", + "_id": "6762dca5d5595612f0a21218" + }, + { + "name": "Рулетка измерительная Stanley 5 м", + "dailyPrice": 20.0, + "totalPrice": 400.0, + "images": [], + "features": { + "Длина": "5 м", + "Ширина ленты": "19 мм", + "Материал корпуса": "Пластик с резиновым покрытием", + "Назначение": "Измерение длины" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Измерительные инструменты", + "type": "Рулетка", + "description": "Классическая рулетка с прочной лентой для строительных и бытовых нужд. Обеспечивает точные измерения.", + "created_at": "2024-12-18T14:31:07.660000", + "updated_at": "2024-12-18T14:31:07.660000", + "_id": "6762dcabd5595612f0a21219" + }, + { + "name": "Рулетка лазерная Bosch GLM 50", + "dailyPrice": 200.0, + "totalPrice": 8000.0, + "images": [ + "http://0.0.0.0:8080/api/resources/images/tools/5ce2f7f4ec7ee5709c101dc011b25001041196e54cab1a44c3911bec2fcc5444/1.png", + "http://0.0.0.0:8080/api/resources/images/tools/5ce2f7f4ec7ee5709c101dc011b25001041196e54cab1a44c3911bec2fcc5444/2.png" + ], + "features": { + "Дальность": "50 м", + "Точность": "± 1.5 мм", + "Дисплей": "Цветной с подсветкой", + "Назначение": "Измерение больших расстояний" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Измерительные инструменты", + "type": "Рулетка", + "description": "Лазерная рулетка для измерения больших расстояний с высокой точностью. Подходит для профессионалов и любителей.", + "created_at": "2024-12-18T14:31:17.525000", + "updated_at": "2024-12-18T14:31:17.525000", + "_id": "6762dcb5d5595612f0a2121a" + }, + { + "name": "Рулетка измерительная Kraftool", + "dailyPrice": 30.0, + "totalPrice": 600.0, + "images": [], + "features": { + "Длина": "7.5 м", + "Ширина ленты": "25 мм", + "Материал корпуса": "Прорезиненный пластик", + "Механизм": "Автоматический стопор" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Измерительные инструменты", + "type": "Рулетка", + "description": "Рулетка с увеличенной длиной для профессионального использования. Эргономичный корпус для удобства.", + "created_at": "2024-12-18T14:31:52.889000", + "updated_at": "2024-12-18T14:31:52.889000", + "_id": "6762dcd8d5595612f0a2121b" + }, + { + "name": "Уровень строительный Stabila 60 см", + "dailyPrice": 50.0, + "totalPrice": 1200.0, + "images": [], + "features": { + "Длина": "60 см", + "Материал": "Алюминий", + "Точность измерения": "0.5 мм/м", + "Назначение": "Проверка горизонтальности и вертикальности" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Измерительные инструменты", + "type": "Уровень", + "description": "Компактный строительный уровень для точных измерений. Подходит для использования дома и на стройке.", + "created_at": "2024-12-18T14:32:28.599000", + "updated_at": "2024-12-18T14:32:28.599000", + "_id": "6762dcfcd5595612f0a2121c" + }, + { + "name": "Уровень магнитный Kraftool 80 см", + "dailyPrice": 70.0, + "totalPrice": 1500.0, + "images": [], + "features": { + "Длина": "80 см", + "Магнит": "Да", + "Материал": "Усиленный алюминий", + "Точность": "0.5 мм/м" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Измерительные инструменты", + "type": "Уровень", + "description": "Магнитный уровень с прочным корпусом, идеально подходит для работы с металлическими конструкциями.", + "created_at": "2024-12-18T14:32:34.536000", + "updated_at": "2024-12-18T14:32:34.536000", + "_id": "6762dd02d5595612f0a2121d" + }, + { + "name": "Лазерный уровень Bosch GLL 2-15", + "dailyPrice": 300.0, + "totalPrice": 9500.0, + "images": [], + "features": { + "Дальность": "15 м", + "Точность": "± 0.3 мм/м", + "Тип линии": "Горизонтальная и вертикальная", + "Назначение": "Высокоточные строительные работы" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Измерительные инструменты", + "type": "Уровень", + "description": "Лазерный уровень для точного выравнивания линий на строительных площадках. Компактный и удобный в использовании.", + "created_at": "2024-12-18T14:32:44.504000", + "updated_at": "2024-12-18T14:32:44.504000", + "_id": "6762dd0cd5595612f0a2121e" + }, + { + "name": "Очки защитные Зубр Эксперт", + "dailyPrice": 20.0, + "totalPrice": 300.0, + "images": [], + "features": { + "Материал линз": "Поликарбонат", + "Антизапотевающее покрытие": "Да", + "Защита": "От механических повреждений", + "Назначение": "Работа с инструментами" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Защитное оборудование", + "type": "Очки защитные", + "description": "Прочные защитные очки для работы с электроинструментами. Защищают глаза от пыли и осколков.", + "created_at": "2024-12-18T14:33:40.545000", + "updated_at": "2024-12-18T14:33:40.545000", + "_id": "6762dd44d5595612f0a2121f" + }, + { + "name": "Очки открытого типа Uvex", + "dailyPrice": 30.0, + "totalPrice": 500.0, + "images": [], + "features": { + "Материал линз": "Пластик", + "УФ-защита": "Да", + "Регулировка": "По ширине", + "Назначение": "Работа на улице и в помещении" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Защитное оборудование", + "type": "Очки защитные", + "description": "Легкие очки с УФ-защитой для использования в разных условиях. Регулируемые дужки обеспечивают комфортную посадку.", + "created_at": "2024-12-18T14:33:48.300000", + "updated_at": "2024-12-18T14:33:48.300000", + "_id": "6762dd4cd5595612f0a21220" + }, + { + "name": "Очки закрытого типа Makita", + "dailyPrice": 40.0, + "totalPrice": 700.0, + "images": [], + "features": { + "Материал линз": "Поликарбонат", + "Вентиляция": "Пассивная", + "Назначение": "Работа с пылью и химикатами", + "Защита": "Полная" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Защитное оборудование", + "type": "Очки защитные", + "description": "Закрытые очки с вентиляцией для защиты от пыли и мелких частиц. Подходят для строительных и ремонтных работ.", + "created_at": "2024-12-18T14:33:54.824000", + "updated_at": "2024-12-18T14:33:54.824000", + "_id": "6762dd52d5595612f0a21221" + }, + { + "name": "Каска строительная белая Зубр", + "dailyPrice": 30.0, + "totalPrice": 600.0, + "images": [ + "http://0.0.0.0:8080/api/resources/images/tools/1049c30b152de23ffe9667fba626782eb566c9ef5476b0fb08a714051475f500/1.png", + "http://0.0.0.0:8080/api/resources/images/tools/1049c30b152de23ffe9667fba626782eb566c9ef5476b0fb08a714051475f500/2.png" + ], + "features": { + "Материал": "Полипропилен", + "Регулировка": "Обхват головы", + "Защита": "Механическая", + "Назначение": "Строительные работы" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Защитное оборудование", + "type": "Каска", + "description": "Прочная строительная каска с регулируемым размером. Надежная защита головы на стройплощадке.", + "created_at": "2024-12-18T14:34:03.882000", + "updated_at": "2024-12-18T14:34:03.882000", + "_id": "6762dd5bd5595612f0a21222" + }, + { + "name": "Каска Ударопрочная красная", + "dailyPrice": 40.0, + "totalPrice": 750.0, + "images": [], + "features": { + "Материал": "Усиленный поликарбонат", + "Регулировка": "Обхват и посадка", + "Вентиляция": "Есть", + "Назначение": "Работа на высоте" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Защитное оборудование", + "type": "Каска", + "description": "Ударопрочная каска с вентиляцией для работы на высоте. Обеспечивает комфорт и надежную защиту.", + "created_at": "2024-12-18T14:34:11.830000", + "updated_at": "2024-12-18T14:34:11.830000", + "_id": "6762dd63d5595612f0a21223" + }, + { + "name": "Каска с козырьком Safetop", + "dailyPrice": 50.0, + "totalPrice": 1000.0, + "images": [], + "features": { + "Материал": "ABS-пластик", + "Особенность": "Козырек", + "Регулировка": "Размер головы", + "Назначение": "Промышленные работы" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Защитное оборудование", + "type": "Каска", + "description": "Каска с козырьком для работы на открытых площадках. Защищает от солнца и ударов.", + "created_at": "2024-12-18T14:34:16.941000", + "updated_at": "2024-12-18T14:34:16.941000", + "_id": "6762dd68d5595612f0a21224" + }, + { + "name": "Перчатки нитриловые Зубр", + "dailyPrice": 10.0, + "totalPrice": 150.0, + "images": [], + "features": { + "Материал": "Нитрил", + "Защита": "От химикатов и масел", + "Размер": "Универсальный", + "Назначение": "Работа с химическими веществами" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Защитное оборудование", + "type": "Перчатки рабочие", + "description": "Прочные нитриловые перчатки, подходящие для работы с химикатами. Отлично защищают руки и обеспечивают комфорт.", + "created_at": "2024-12-18T14:34:22.213000", + "updated_at": "2024-12-18T14:34:22.213000", + "_id": "6762dd6ed5595612f0a21225" + }, + { + "name": "Перчатки кожаные сварщика", + "dailyPrice": 30.0, + "totalPrice": 500.0, + "images": [], + "features": { + "Материал": "Натуральная кожа", + "Защита": "От высоких температур", + "Размер": "L", + "Назначение": "Сварочные работы" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Защитное оборудование", + "type": "Перчатки рабочие", + "description": "Кожаные перчатки, обеспечивающие надежную защиту при сварочных работах. Выдерживают высокие температуры.", + "created_at": "2024-12-18T14:34:49.124000", + "updated_at": "2024-12-18T14:34:49.124000", + "_id": "6762dd89d5595612f0a21226" + }, + { + "name": "Перчатки х/б с ПВХ покрытием", + "dailyPrice": 5.0, + "totalPrice": 80.0, + "images": [], + "features": { + "Материал": "Хлопок и ПВХ", + "Защита": "От механических повреждений", + "Размер": "Универсальный", + "Назначение": "Строительные и садовые работы" + }, + "rating": 0.0, + "reviews_count": 0, + "ordersNumber": 0, + "category": "Защитное оборудование", + "type": "Перчатки рабочие", + "description": "Доступные и удобные перчатки с ПВХ покрытием для универсального использования. Обеспечивают хороший захват.", + "created_at": "2024-12-18T14:34:49.124000", + "updated_at": "2024-12-18T14:34:49.124000", + "_id": "6762dd89d5595612f0a21227" + } + ], + "orders": [ + { + "tools": [ + "6762db8ad5595612f0a21207", + "6762dbe7d5595612f0a21208" + ], + "start_leasing": "2024-12-12T15:00:35.437000", + "end_leasing": "2024-12-30T15:00:35.437000", + "price": 1620.0, + "client": "6762d6a2f6292fe72b752b5e", + "delivery_type": "to_door", + "delivery_state": "delivered", + "payment_type": "cash", + "payment_state": "paid", + "create_order_time": "2024-12-12T15:00:35.437000", + "_id": "6762e4905644d6846bbf246f" + }, + { + "tools": [ + "6762db8ad5595612f0a21207", + "6762dbe7d5595612f0a21208", + "6762dbefd5595612f0a21209", + "6762dc34d5595612f0a2120d" + ], + "start_leasing": "2024-12-12T15:00:35.437000", + "end_leasing": "2025-01-30T15:00:35.437000", + "price": 7105.0, + "client": "6762d6d9f6292fe72b752b5f", + "delivery_type": "to_door", + "delivery_state": "delivered", + "payment_type": "cash", + "payment_state": "paid", + "create_order_time": "2024-12-12T15:00:35.437000", + "_id": "6762e517561db75d683b6941" + }, + { + "tools": [ + "6762dbefd5595612f0a21209", + "6762dc34d5595612f0a2120d" + ], + "start_leasing": "2024-12-18T10:00:00", + "end_leasing": "2024-12-25T10:00:00", + "price": 275.0, + "client": "6762d6a2f6292fe72b752b5e", + "delivery_type": "to_door", + "delivery_state": "delivered", + "payment_type": "cash", + "payment_state": "paid", + "create_order_time": "2024-12-18T10:00:00", + "_id": "6762f80747f9d95025a19268" + }, + { + "tools": [ + "6762dc15d5595612f0a2120b", + "6762dc27d5595612f0a2120c" + ], + "start_leasing": "2024-12-18T15:00:00", + "end_leasing": "2024-12-20T15:00:00", + "price": 130.0, + "client": "6762d6ebf6292fe72b752b60", + "delivery_type": "to_door", + "delivery_state": "delivered", + "payment_type": "cash", + "payment_state": "paid", + "create_order_time": "2024-12-18T15:00:00", + "_id": "6762f94047f9d95025a1926b" + }, + { + "tools": [ + "6762dc67d5595612f0a21213", + "6762dca1d5595612f0a21217" + ], + "start_leasing": "2024-12-18T16:34:15.069000", + "end_leasing": "2025-01-01T15:00:00", + "price": 11050.0, + "client": "6762d6ebf6292fe72b752b60", + "delivery_type": "to_door", + "delivery_state": "delivered", + "payment_type": "cash", + "payment_state": "paid", + "create_order_time": "2024-12-18T16:34:15.069000", + "_id": "6762f98747f9d95025a1926e" + }, + { + "tools": [ + "6762dc67d5595612f0a21213", + "6762dca1d5595612f0a21217" + ], + "start_leasing": "2024-12-18T16:51:47.919000", + "end_leasing": "2025-01-01T15:00:00", + "price": 11050.0, + "client": "6762d6d9f6292fe72b752b5f", + "delivery_type": "to_door", + "delivery_state": "delivered", + "payment_type": "cash", + "payment_state": "paid", + "create_order_time": "2024-12-18T19:51:47.922000", + "_id": "6762fda347f9d95025a1926f" + } + ], + "categories": [ + { + "name": "Ручной инструмент", + "types": [ + "6762d9526b4835df660bce67", + "6762d9656b4835df660bce68", + "6762d96c6b4835df660bce69" + ], + "_id": "6762d9126b4835df660bce63" + }, + { + "name": "Электроинструмент", + "types": [ + "6762d9776b4835df660bce6a", + "6762d97d6b4835df660bce6b", + "6762d9816b4835df660bce6c" + ], + "_id": "6762d91b6b4835df660bce64" + }, + { + "name": "Измерительные инструменты", + "types": [ + "6762d98e6b4835df660bce6d", + "6762d9946b4835df660bce6e" + ], + "_id": "6762d9226b4835df660bce65" + }, + { + "name": "Защитное оборудование", + "types": [ + "6762d9bd6b4835df660bce70", + "6762d9c76b4835df660bce71", + "6762d9d16b4835df660bce72" + ], + "_id": "6762d92d6b4835df660bce66" + } + ], + "types": [ + { + "name": "Молоток", + "category_name": "Ручной инструмент", + "tools": [ + "6762db8ad5595612f0a21207", + "6762dbe7d5595612f0a21208", + "6762dbefd5595612f0a21209" + ], + "_id": "6762d9526b4835df660bce67" + }, + { + "name": "Отвертка", + "category_name": "Ручной инструмент", + "tools": [ + "6762dc08d5595612f0a2120a", + "6762dc15d5595612f0a2120b", + "6762dc27d5595612f0a2120c" + ], + "_id": "6762d9656b4835df660bce68" + }, + { + "name": "Рожковый ключ", + "category_name": "Ручной инструмент", + "tools": [ + "6762dc34d5595612f0a2120d", + "6762dc3ad5595612f0a2120e", + "6762dc40d5595612f0a2120f" + ], + "_id": "6762d96c6b4835df660bce69" + }, + { + "name": "Дрель", + "category_name": "Электроинструмент", + "tools": [ + "6762dc49d5595612f0a21210", + "6762dc4ed5595612f0a21211", + "6762dc54d5595612f0a21212" + ], + "_id": "6762d9776b4835df660bce6a" + }, + { + "name": "Болгарка", + "category_name": "Электроинструмент", + "tools": [ + "6762dc67d5595612f0a21213", + "6762dc6fd5595612f0a21214", + "6762dc83d5595612f0a21215" + ], + "_id": "6762d97d6b4835df660bce6b" + }, + { + "name": "Перфоратор", + "category_name": "Электроинструмент", + "tools": [ + "6762dc98d5595612f0a21216", + "6762dca1d5595612f0a21217", + "6762dca5d5595612f0a21218" + ], + "_id": "6762d9816b4835df660bce6c" + }, + { + "name": "Рулетка", + "category_name": "Измерительные инструменты", + "tools": [ + "6762dcabd5595612f0a21219", + "6762dcb5d5595612f0a2121a", + "6762dcd8d5595612f0a2121b" + ], + "_id": "6762d98e6b4835df660bce6d" + }, + { + "name": "Уровень", + "category_name": "Измерительные инструменты", + "tools": [ + "6762dcfcd5595612f0a2121c", + "6762dd02d5595612f0a2121d", + "6762dd0cd5595612f0a2121e" + ], + "_id": "6762d9946b4835df660bce6e" + }, + { + "name": "Очки защитные", + "category_name": "Защитное оборудование", + "tools": [ + "6762dd44d5595612f0a2121f", + "6762dd4cd5595612f0a21220", + "6762dd52d5595612f0a21221" + ], + "_id": "6762d9bd6b4835df660bce70" + }, + { + "name": "Каска", + "category_name": "Защитное оборудование", + "tools": [ + "6762dd5bd5595612f0a21222", + "6762dd63d5595612f0a21223", + "6762dd68d5595612f0a21224" + ], + "_id": "6762d9c76b4835df660bce71" + }, + { + "name": "Перчатки рабочие", + "category_name": "Защитное оборудование", + "tools": [ + "6762dd6ed5595612f0a21225", + "6762dd89d5595612f0a21226", + "6762dd89d5595612f0a21227" + ], + "_id": "6762d9d16b4835df660bce72" + } + ], + "reviews": [ + { + "toolId": "6762db8ad5595612f0a21207", + "reviewerId": "6762d6a2f6292fe72b752b5e", + "rating": 4, + "date": "2024-12-19T15:22:28.835000", + "text": "Очень удобный молоток-гвоздодер! Ручка не скользит, а вес идеально подходит для работы. Однако металл на гвоздодере немного мягче, чем ожидалось, и чуть согнулся после работы с твердыми гвоздями.", + "_id": "6762ea83cf5e24ef1c7ce0f1" + }, + { + "toolId": "6762db8ad5595612f0a21207", + "reviewerId": "6762d6d9f6292fe72b752b5f", + "rating": 2, + "date": "2024-12-18T15:22:28.835000", + "text": "Молоток оказался неудобным в использовании. Ручка хоть и прорезиненная, но скользит в руках при длительной работе. Гвоздодер согнулся после первой же попытки вытащить плотный гвоздь. За такую цену ожидал большего качества.", + "_id": "6762ed4e2333862c37e6b76a" + }, + { + "toolId": "6762dbe7d5595612f0a21208", + "reviewerId": "6762d6a2f6292fe72b752b5e", + "rating": 5, + "date": "2024-12-19T15:22:28.835000", + "text": "Отличный молоток! Прочный, тяжелый и идеально подходит для слесарных работ. Двухкомпонентная ручка действительно снижает вибрацию, работать с ним комфортно даже длительное время. Полностью доволен покупкой.", + "_id": "6762eda72333862c37e6b76b" + }, + { + "toolId": "6762dbe7d5595612f0a21208", + "reviewerId": "6762d6d9f6292fe72b752b5f", + "rating": 4, + "date": "2024-12-18T15:22:28.835000", + "text": "Хороший молоток, тяжёлый и качественный. Ручка удобная, но покрытие немного стирается после долгого использования. В остальном инструмент оправдал ожидания.", + "_id": "6762ee022333862c37e6b76c" + }, + { + "toolId": "6762dbefd5595612f0a21209", + "reviewerId": "6762d6a2f6292fe72b752b5e", + "rating": 4, + "date": "2024-12-26T10:00:00", + "text": "Отличный столярный молоток, но немного легковат для крупных задач.", + "_id": "6762f8ac47f9d95025a19269" + }, + { + "toolId": "6762dc34d5595612f0a2120d", + "reviewerId": "6762d6d9f6292fe72b752b5f", + "rating": 5, + "date": "2024-12-26T10:00:00", + "text": "Ключ удобный, антикоррозийное покрытие работает отлично. Рекомендую!", + "_id": "6762f8d747f9d95025a1926a" + }, + { + "toolId": "6762dc15d5595612f0a2120b", + "reviewerId": "6762d6ebf6292fe72b752b60", + "rating": 4, + "date": "2024-12-22T10:00:00", + "text": "Отвертка плоская оказалась надежной, но ручка чуть скользила.", + "_id": "6762f95247f9d95025a1926c" + }, + { + "toolId": "6762dc27d5595612f0a2120c", + "reviewerId": "6762d6ebf6292fe72b752b60", + "rating": 5, + "date": "2024-12-22T10:00:00", + "text": "Набор бит Kraftool спас много раз. Отличный инструмент!", + "_id": "6762f96a47f9d95025a1926d" + }, + { + "toolId": "6762dc67d5595612f0a21213", + "reviewerId": "6762d6d9f6292fe72b752b5f", + "rating": 5, + "date": "2025-01-02T15:00:00", + "text": "Шлифмашина Bosch показала себя идеально! Рекомендую.", + "_id": "6762fdc747f9d95025a19270" + }, + { + "toolId": "6762dca1d5595612f0a21217", + "reviewerId": "6762d6ebf6292fe72b752b60", + "rating": 4, + "date": "2025-01-02T15:00:00", + "text": "Перфоратор мощный, но немного тяжеловат для долгой работы.", + "_id": "6762fdd947f9d95025a19271" + } + ] +} + +### +GET http://localhost:8000/api/data/import +Authorization: Bearer {{authToken}} + +### +GET http://localhost:8000/api/orders/worker/ +Authorization: Bearer {{authToken}} + +### +GET http://localhost:8000/api/tools/paginated +Authorization: Bearer {{authToken}} + +### +GET http://localhost:8000/api/orders/6762e4905644d6846bbf246f +Authorization: Bearer {{authToken}} + + diff --git a/backend/src/infrastructure/repo_implementations/im_ex_repo/im_ex_repo.py b/backend/src/infrastructure/repo_implementations/im_ex_repo/im_ex_repo.py index c6c086e..a9fb549 100644 --- a/backend/src/infrastructure/repo_implementations/im_ex_repo/im_ex_repo.py +++ b/backend/src/infrastructure/repo_implementations/im_ex_repo/im_ex_repo.py @@ -71,19 +71,33 @@ async def import_data(self, data: DBModelCreate) -> None: if data.orders: await self.order_collection.delete_many({}) - await self.order_collection.insert_many([order.model_dump() for order in data.orders]) + orders = [order.model_dump() for order in data.orders] + for order in orders: + order["client"] = str_to_objectId(order.get("client")) + order["tools"] = [str_to_objectId(tool) for tool in order["tools"]] + await self.order_collection.insert_many(orders) if data.categories: await self.category_collection.delete_many({}) - await self.category_collection.insert_many([category.model_dump() for category in data.categories]) + categories = [category.model_dump() for category in data.categories] + for category in categories: + category["types"] = [str_to_objectId(type) for type in category["types"]] + await self.category_collection.insert_many(categories) if data.types: await self.type_collection.delete_many({}) - await self.type_collection.insert_many([typee.model_dump() for typee in data.types]) + types = [typee.model_dump() for typee in data.types] + for typee in types: + typee["tools"] = [str_to_objectId(tool) for tool in typee["tools"]] + await self.type_collection.insert_many(types) if data.reviews: await self.review_collection.delete_many({}) - await self.review_collection.insert_many([review.model_dump() for review in data.reviews]) + reviews = [review.model_dump() for review in data.reviews] + for review in reviews: + review["toolId"] = str_to_objectId(review["toolId"]) + review["reviewerId"] = str_to_objectId(review["reviewerId"]) + await self.review_collection.insert_many(reviews) except PyMongoError: raise DatabaseError() diff --git a/docker-compose.yml b/docker-compose.yml index b2501cb..1dfcfad 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,8 @@ services: db: container_name: mongodb hostname: mongodb + ports: + - "127.0.0.1:27017:27017" # для просмотра коллекций в mongoDB compass build: context: db dockerfile: Dockerfile