This commit is contained in:
@@ -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],
|
||||
})
|
||||
|
||||
12
apps/api/src/app/brands/brands.controller.ts
Normal file
12
apps/api/src/app/brands/brands.controller.ts
Normal 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();
|
||||
}
|
||||
}
|
||||
16
apps/api/src/app/brands/brands.data.ts
Normal file
16
apps/api/src/app/brands/brands.data.ts
Normal 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: 'Гидравлика' },
|
||||
];
|
||||
9
apps/api/src/app/brands/brands.module.ts
Normal file
9
apps/api/src/app/brands/brands.module.ts
Normal 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 {}
|
||||
10
apps/api/src/app/brands/brands.service.ts
Normal file
10
apps/api/src/app/brands/brands.service.ts
Normal 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;
|
||||
}
|
||||
}
|
||||
12
apps/api/src/app/categories/categories.controller.ts
Normal file
12
apps/api/src/app/categories/categories.controller.ts
Normal 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();
|
||||
}
|
||||
}
|
||||
36
apps/api/src/app/categories/categories.data.ts
Normal file
36
apps/api/src/app/categories/categories.data.ts
Normal 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',
|
||||
},
|
||||
];
|
||||
9
apps/api/src/app/categories/categories.module.ts
Normal file
9
apps/api/src/app/categories/categories.module.ts
Normal 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 {}
|
||||
10
apps/api/src/app/categories/categories.service.ts
Normal file
10
apps/api/src/app/categories/categories.service.ts
Normal 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;
|
||||
}
|
||||
}
|
||||
12
apps/api/src/app/products/products.controller.ts
Normal file
12
apps/api/src/app/products/products.controller.ts
Normal 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();
|
||||
}
|
||||
}
|
||||
14
apps/api/src/app/products/products.data.ts
Normal file
14
apps/api/src/app/products/products.data.ts
Normal 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 },
|
||||
];
|
||||
9
apps/api/src/app/products/products.module.ts
Normal file
9
apps/api/src/app/products/products.module.ts
Normal 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 {}
|
||||
10
apps/api/src/app/products/products.service.ts
Normal file
10
apps/api/src/app/products/products.service.ts
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -20,5 +20,10 @@
|
||||
"eslint.config.js",
|
||||
"eslint.config.cjs",
|
||||
"eslint.config.mjs"
|
||||
],
|
||||
"references": [
|
||||
{
|
||||
"path": "../../libs/shared/tsconfig.lib.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user