feat(sync): synchronize Hiboutik data through POST /sync
POST /sync starts the full synchronization in the background (202, or 409 when one is already running). Entities are synced in dependency order: brands, categories, suppliers, products (with versions and stocks), customers. Each row is synced independently so that a failure is logged without stopping the rest. Replaces the default AppService.
This commit is contained in:
@@ -1,10 +1,67 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { AppController } from './app.controller';
|
||||
import { AppService } from './app.service';
|
||||
import { ConfigModule } from '@nestjs/config';
|
||||
import { HiboutikService } from './services/hiboutik/hiboutik.service';
|
||||
import { CategoryHiboutikRepository } from './hiboutik/category.hiboutik.repository';
|
||||
import { CategoryConverter } from './models/converter/category.converter';
|
||||
import { ProductHiboutikRepository } from './hiboutik/product.hiboutik.repository';
|
||||
import { HttpModule } from '@nestjs/axios';
|
||||
import { CategoryDatabaseRepository } from './database/category.database.repository';
|
||||
import { PrismaModule } from '../prisma/prisma.module';
|
||||
import { HiboutikClient } from './hiboutik/hiboutik.client';
|
||||
import { BrandHiboutikRepository } from './hiboutik/brand.hiboutik.repository';
|
||||
import { BrandDatabaseRepository } from './database/brand.database.repository';
|
||||
import { BrandConverter } from './models/converter/brand.converter';
|
||||
import { SupplierHiboutikRepository } from './hiboutik/supplier.hiboutik.repository';
|
||||
import { SupplierDatabaseRepository } from './database/supplier.database.repository';
|
||||
import { SupplierConverter } from './models/converter/supplier.converter';
|
||||
import { StockHiboutikRepository } from './hiboutik/stock.hiboutik.repository';
|
||||
import { ProductConverter } from './models/converter/product.converter';
|
||||
import { ProductDatabaseRepository } from './database/product.database.repository';
|
||||
import { ProductVersionDatabaseRepository } from './database/productVersion.database.repository';
|
||||
import { CustomerHiboutikRepository } from './hiboutik/customer.hiboutik.repository';
|
||||
import { CustomerDatabaseRepository } from './database/customer.database.repository';
|
||||
import { CustomerConverter } from './models/converter/customer.converter';
|
||||
import { BrandHiboutikService } from './services/hiboutik/brand.hiboutik.service';
|
||||
import { CategoryHiboutikService } from './services/hiboutik/category.hiboutik.service';
|
||||
import { CustomerHiboutikService } from './services/hiboutik/customer.hiboutik.service';
|
||||
import { SupplierHiboutikService } from './services/hiboutik/supplier.hiboutik.service';
|
||||
import { ProductHiboutikService } from './services/hiboutik/product.hiboutik.service';
|
||||
|
||||
@Module({
|
||||
imports: [],
|
||||
imports: [
|
||||
ConfigModule.forRoot({
|
||||
isGlobal: true,
|
||||
}),
|
||||
HttpModule.register({ timeout: 30_000 }),
|
||||
PrismaModule,
|
||||
],
|
||||
controllers: [AppController],
|
||||
providers: [AppService],
|
||||
providers: [
|
||||
BrandConverter,
|
||||
BrandDatabaseRepository,
|
||||
BrandHiboutikRepository,
|
||||
BrandHiboutikService,
|
||||
CategoryConverter,
|
||||
CategoryDatabaseRepository,
|
||||
CategoryHiboutikRepository,
|
||||
CategoryHiboutikService,
|
||||
CustomerHiboutikRepository,
|
||||
CustomerDatabaseRepository,
|
||||
CustomerConverter,
|
||||
CustomerHiboutikService,
|
||||
HiboutikClient,
|
||||
HiboutikService,
|
||||
ProductConverter,
|
||||
ProductDatabaseRepository,
|
||||
ProductHiboutikRepository,
|
||||
ProductHiboutikService,
|
||||
ProductVersionDatabaseRepository,
|
||||
StockHiboutikRepository,
|
||||
SupplierConverter,
|
||||
SupplierDatabaseRepository,
|
||||
SupplierHiboutikRepository,
|
||||
SupplierHiboutikService,
|
||||
],
|
||||
})
|
||||
export class AppModule {}
|
||||
|
||||
Reference in New Issue
Block a user