Перенес mockup данные на бэкенд
Some checks failed
CI / main (push) Has been cancelled

This commit is contained in:
Igor Rybakov
2026-03-06 23:51:52 +02:00
parent b9918116ae
commit cb527f4961
35 changed files with 468 additions and 85 deletions

View File

@@ -1,9 +1,12 @@
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { BrandsModule } from './brands/brands.module';
import { ProductsModule } from './products/products.module';
import { CategoriesModule } from './categories/categories.module';
@Module({
imports: [],
imports: [BrandsModule, ProductsModule, CategoriesModule],
controllers: [AppController],
providers: [AppService],
})

View File

@@ -0,0 +1,12 @@
import { Controller, Get } from '@nestjs/common';
import { BrandsService } from './brands.service';
@Controller('brands')
export class BrandsController {
constructor(private readonly brandsService: BrandsService) {}
@Get()
findAll() {
return this.brandsService.findAll();
}
}

View File

@@ -0,0 +1,16 @@
import { Brand } from '@spairtech/shared';
export const brands: Brand[] = [
{ id: 1, name: 'Bosch Rexroth', country: 'DE', logo: 'BR', category: 'Гидравлика' },
{ id: 2, name: 'Festo', country: 'DE', logo: 'FE', category: 'Пневматика' },
{ id: 3, name: 'Siemens', country: 'DE', logo: 'SI', category: 'АСУ' },
{ id: 4, name: 'Parker', country: 'US', logo: 'PK', category: 'Гидравлика' },
{ id: 5, name: 'HYDAC', country: 'DE', logo: 'HY', category: 'Гидравлика' },
{ id: 6, name: 'Camozzi', country: 'IT', logo: 'CZ', category: 'Пневматика' },
{ id: 7, name: 'Beckhoff', country: 'DE', logo: 'BK', category: 'АСУ' },
{ id: 8, name: 'IMI Norgren', country: 'UK', logo: 'IN', category: 'Пневматика' },
{ id: 9, name: 'ABB', country: 'CH', logo: 'AB', category: 'АСУ' },
{ id: 10, name: 'Danfoss', country: 'DK', logo: 'DF', category: 'Гидравлика' },
{ id: 11, name: 'Schneider Electric', country: 'FR', logo: 'SE', category: 'АСУ' },
{ id: 12, name: 'HAWE', country: 'DE', logo: 'HW', category: 'Гидравлика' },
];

View File

@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { BrandsController } from './brands.controller';
import { BrandsService } from './brands.service';
@Module({
controllers: [BrandsController],
providers: [BrandsService],
})
export class BrandsModule {}

View File

@@ -0,0 +1,10 @@
import { Injectable } from '@nestjs/common';
import { brands } from './brands.data';
@Injectable()
export class BrandsService {
async findAll() {
await new Promise((resolve) => setTimeout(resolve, 1000));
return brands;
}
}

View File

@@ -0,0 +1,12 @@
import { Controller, Get } from '@nestjs/common';
import { CategoriesService } from './categories.service';
@Controller('categories')
export class CategoriesController {
constructor(private readonly categoriesService: CategoriesService) {}
@Get()
findAll() {
return this.categoriesService.findAll();
}
}

View File

@@ -0,0 +1,36 @@
import { Category } from '@spairtech/shared';
export const categories: Category[] = [
{
slug: 'gidravlika',
name: 'Гидравлика',
icon: 'hydraulic',
description: 'Насосы, распределители, фильтры, цилиндры, гидростанции',
brands: 'Bosch Rexroth · Parker · HYDAC · Danfoss',
color: 'var(--color-orange-500)',
},
{
slug: 'pnevmatika',
name: 'Пневматика',
icon: 'pneumatic',
description: 'Цилиндры, клапаны, FRL-модули, фитинги, вакуум',
brands: 'Festo · Camozzi · IMI Norgren · Metal Work',
color: 'var(--color-teal-500)',
},
{
slug: 'asu',
name: 'АСУ',
icon: 'automation',
description: 'ПЛК, частотники, сервоприводы, датчики, HMI, энкодеры',
brands: 'Siemens · Beckhoff · ABB · Pepperl+Fuchs',
color: 'var(--color-navy-400)',
},
{
slug: 'zip',
name: 'ЗИП',
icon: 'spares',
description: 'Запасные части, контакторы, реле, вспомогательные компоненты',
brands: 'Siemens · Schneider · Phoenix Contact · WAGO',
color: '#7B1FA2',
},
];

View File

@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { CategoriesController } from './categories.controller';
import { CategoriesService } from './categories.service';
@Module({
controllers: [CategoriesController],
providers: [CategoriesService],
})
export class CategoriesModule {}

View File

@@ -0,0 +1,10 @@
import { Injectable } from '@nestjs/common';
import { categories } from './categories.data';
@Injectable()
export class CategoriesService {
async findAll() {
await new Promise((resolve) => setTimeout(resolve, 1000));
return categories;
}
}

View File

@@ -0,0 +1,12 @@
import { Controller, Get } from '@nestjs/common';
import { ProductsService } from './products.service';
@Controller('products')
export class ProductsController {
constructor(private readonly productsService: ProductsService) {}
@Get()
findAll() {
return this.productsService.findAll();
}
}

View File

@@ -0,0 +1,14 @@
import { Product } from '@spairtech/shared';
export const products: Product[] = [
{ id: 1, sku: '4WRPEH 6 C3B12L', name: 'Пропорциональный распределитель', brand: 'Bosch Rexroth', category: 'Гидравлика', subcategory: 'Распределители', price: 'По запросу', image: '', inStock: true },
{ id: 2, sku: 'DSBC-50-200-PA', name: 'Пневмоцилиндр стандартный ISO 15552', brand: 'Festo', category: 'Пневматика', subcategory: 'Цилиндры', price: 'По запросу', image: '', inStock: true },
{ id: 3, sku: '6ES7 511-1AK02', name: 'CPU 1511-1 PN', brand: 'Siemens', category: 'АСУ', subcategory: 'Контроллеры', price: 'По запросу', image: '', inStock: false },
{ id: 4, sku: 'D1VW020BNJW', name: 'Гидрораспределитель с электроуправлением', brand: 'Parker', category: 'Гидравлика', subcategory: 'Распределители', price: 'По запросу', image: '', inStock: true },
{ id: 5, sku: '0160 D 010 BH4HC', name: 'Фильтроэлемент напорный', brand: 'HYDAC', category: 'Гидравлика', subcategory: 'Фильтры', price: 'По запросу', image: '', inStock: true },
{ id: 6, sku: '61F-2H-060-T9', name: 'Пневмоцилиндр серии 61', brand: 'Camozzi', category: 'Пневматика', subcategory: 'Цилиндры', price: 'По запросу', image: '', inStock: false },
{ id: 7, sku: 'CX2040-0135', name: 'Embedded PC', brand: 'Beckhoff', category: 'АСУ', subcategory: 'Контроллеры', price: 'По запросу', image: '', inStock: true },
{ id: 8, sku: 'MVA-D-3-FES', name: 'Клапан управляющий', brand: 'HAWE', category: 'Гидравлика', subcategory: 'Клапаны', price: 'По запросу', image: '', inStock: true },
{ id: 9, sku: 'ENI58IL-H12DA5-1024', name: 'Энкодер инкрементальный', brand: 'Pepperl+Fuchs', category: 'АСУ', subcategory: 'Энкодеры', price: 'По запросу', image: '', inStock: true },
{ id: 10, sku: '3RH1921-1FA22', name: 'Блок вспомогательных контактов', brand: 'Siemens', category: 'ЗИП', subcategory: 'Контакторы', price: 'По запросу', image: '', inStock: true },
];

View File

@@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { ProductsController } from './products.controller';
import { ProductsService } from './products.service';
@Module({
controllers: [ProductsController],
providers: [ProductsService],
})
export class ProductsModule {}

View File

@@ -0,0 +1,10 @@
import { Injectable } from '@nestjs/common';
import { products } from './products.data';
@Injectable()
export class ProductsService {
async findAll() {
await new Promise((resolve) => setTimeout(resolve, 1000));
return products;
}
}

View File

@@ -9,6 +9,7 @@ import { AppModule } from './app/app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.enableCors();
const globalPrefix = 'api';
app.setGlobalPrefix(globalPrefix);
const port = process.env.PORT || 3000;

View File

@@ -20,5 +20,10 @@
"eslint.config.js",
"eslint.config.cjs",
"eslint.config.mjs"
],
"references": [
{
"path": "../../libs/shared/tsconfig.lib.json"
}
]
}