Просмотр исходного кода

refactor(server): Reorganize folder structure or api & service modules

Michael Bromley 7 лет назад
Родитель
Сommit
dfa24add8a
47 измененных файлов с 171 добавлено и 208 удалено
  1. 14 16
      server/src/api/api.module.ts
  2. 0 0
      server/src/api/common/__snapshots__/graphql-custom-fields.spec.ts.snap
  3. 2 2
      server/src/api/common/asset-interceptor.spec.ts
  4. 3 3
      server/src/api/common/asset-interceptor.ts
  5. 3 3
      server/src/api/common/auth-guard.ts
  6. 3 3
      server/src/api/common/graphql-config.service.ts
  7. 0 0
      server/src/api/common/graphql-custom-fields.spec.ts
  8. 0 0
      server/src/api/common/graphql-custom-fields.ts
  9. 1 1
      server/src/api/common/request-context.pipe.ts
  10. 1 1
      server/src/api/common/request-context.service.ts
  11. 4 4
      server/src/api/common/roles-guard.ts
  12. 0 29
      server/src/api/jwt.strategy.ts
  13. 2 2
      server/src/api/resolvers/administrator.resolver.ts
  14. 2 2
      server/src/api/resolvers/asset.resolver.ts
  15. 3 3
      server/src/api/resolvers/auth.resolver.ts
  16. 2 2
      server/src/api/resolvers/channel.resolver.ts
  17. 0 0
      server/src/api/resolvers/config.resolver.ts
  18. 2 2
      server/src/api/resolvers/customer.resolver.ts
  19. 3 3
      server/src/api/resolvers/facet.resolver.ts
  20. 3 3
      server/src/api/resolvers/product-option.resolver.ts
  21. 4 4
      server/src/api/resolvers/product.resolver.ts
  22. 2 2
      server/src/api/resolvers/role.resolver.ts
  23. 0 0
      server/src/api/types/administrator.api.graphql
  24. 0 0
      server/src/api/types/asset.api.graphql
  25. 0 0
      server/src/api/types/auth.api.graphql
  26. 0 0
      server/src/api/types/channel.api.graphql
  27. 0 0
      server/src/api/types/config.api.graphql
  28. 0 0
      server/src/api/types/customer.api.graphql
  29. 0 0
      server/src/api/types/facet.api.graphql
  30. 0 0
      server/src/api/types/product-option.api.graphql
  31. 0 0
      server/src/api/types/product.api.graphql
  32. 0 0
      server/src/api/types/role.api.graphql
  33. 0 6
      server/src/entity/administrator/administrator.dto.ts
  34. 6 6
      server/src/service/providers/administrator.service.ts
  35. 5 5
      server/src/service/providers/asset.service.ts
  36. 3 3
      server/src/service/providers/auth.service.ts
  37. 5 5
      server/src/service/providers/channel.service.ts
  38. 8 8
      server/src/service/providers/customer.service.ts
  39. 11 11
      server/src/service/providers/facet-value.service.ts
  40. 12 12
      server/src/service/providers/facet.service.ts
  41. 0 0
      server/src/service/providers/password.service.ts
  42. 10 10
      server/src/service/providers/product-option-group.service.ts
  43. 8 8
      server/src/service/providers/product-option.service.ts
  44. 16 16
      server/src/service/providers/product-variant.service.ts
  45. 13 13
      server/src/service/providers/product.service.ts
  46. 7 7
      server/src/service/providers/role.service.ts
  47. 13 13
      server/src/service/service.module.ts

+ 14 - 16
server/src/api/api.module.ts

@@ -6,22 +6,21 @@ import { ConfigModule } from '../config/config.module';
 import { I18nModule } from '../i18n/i18n.module';
 import { ServiceModule } from '../service/service.module';
 
-import { AdministratorResolver } from './administrator/administrator.resolver';
-import { AssetInterceptor } from './asset-interceptor';
-import { AssetResolver } from './asset/asset.resolver';
-import { AuthGuard } from './auth-guard';
-import { AuthResolver } from './auth/auth.resolver';
-import { ChannelResolver } from './channel/channel.resolver';
+import { AssetInterceptor } from './common/asset-interceptor';
+import { AuthGuard } from './common/auth-guard';
+import { GraphqlConfigService } from './common/graphql-config.service';
 import { RequestContextService } from './common/request-context.service';
-import { ConfigResolver } from './config/config.resolver';
-import { CustomerResolver } from './customer/customer.resolver';
-import { FacetResolver } from './facet/facet.resolver';
-import { GraphqlConfigService } from './graphql-config.service';
-import { JwtStrategy } from './jwt.strategy';
-import { ProductOptionResolver } from './product-option/product-option.resolver';
-import { ProductResolver } from './product/product.resolver';
-import { RoleResolver } from './role/role.resolver';
-import { RolesGuard } from './roles-guard';
+import { RolesGuard } from './common/roles-guard';
+import { AdministratorResolver } from './resolvers/administrator.resolver';
+import { AssetResolver } from './resolvers/asset.resolver';
+import { AuthResolver } from './resolvers/auth.resolver';
+import { ChannelResolver } from './resolvers/channel.resolver';
+import { ConfigResolver } from './resolvers/config.resolver';
+import { CustomerResolver } from './resolvers/customer.resolver';
+import { FacetResolver } from './resolvers/facet.resolver';
+import { ProductOptionResolver } from './resolvers/product-option.resolver';
+import { ProductResolver } from './resolvers/product.resolver';
+import { RoleResolver } from './resolvers/role.resolver';
 
 const exportedProviders = [
     AdministratorResolver,
@@ -51,7 +50,6 @@ const exportedProviders = [
     ],
     providers: [
         ...exportedProviders,
-        JwtStrategy,
         RequestContextService,
         {
             provide: APP_GUARD,

+ 0 - 0
server/src/api/__snapshots__/graphql-custom-fields.spec.ts.snap → server/src/api/common/__snapshots__/graphql-custom-fields.spec.ts.snap


+ 2 - 2
server/src/api/asset-interceptor.spec.ts → server/src/api/common/asset-interceptor.spec.ts

@@ -1,8 +1,8 @@
 import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context.host';
 import { of } from 'rxjs';
 
-import { MockConfigService } from '../config/config.service.mock';
-import { Asset } from '../entity/asset/asset.entity';
+import { MockConfigService } from '../../config/config.service.mock';
+import { Asset } from '../../entity/asset/asset.entity';
 
 import { AssetInterceptor } from './asset-interceptor';
 

+ 3 - 3
server/src/api/asset-interceptor.ts → server/src/api/common/asset-interceptor.ts

@@ -4,9 +4,9 @@ import { Observable } from 'rxjs';
 import { map } from 'rxjs/operators';
 import { Type } from 'shared/shared-types';
 
-import { AssetStorageStrategy } from '../config/asset-storage-strategy/asset-storage-strategy';
-import { ConfigService } from '../config/config.service';
-import { Asset } from '../entity/asset/asset.entity';
+import { AssetStorageStrategy } from '../../config/asset-storage-strategy/asset-storage-strategy';
+import { ConfigService } from '../../config/config.service';
+import { Asset } from '../../entity/asset/asset.entity';
 
 /**
  * Transforms outputs so that any Asset instances are run through the {@link AssetStorageStrategy.toAbsoluteUrl}

+ 3 - 3
server/src/api/auth-guard.ts → server/src/api/common/auth-guard.ts

@@ -3,9 +3,9 @@ import { Reflector } from '@nestjs/core';
 import { GqlExecutionContext } from '@nestjs/graphql';
 import { ExtractJwt, Strategy } from 'passport-jwt';
 
-import { JwtPayload } from '../common/types/auth-types';
-import { ConfigService } from '../config/config.service';
-import { AuthService } from '../service/auth.service';
+import { JwtPayload } from '../../common/types/auth-types';
+import { ConfigService } from '../../config/config.service';
+import { AuthService } from '../../service/providers/auth.service';
 
 import { PERMISSIONS_METADATA_KEY } from './roles-guard';
 

+ 3 - 3
server/src/api/graphql-config.service.ts → server/src/api/common/graphql-config.service.ts

@@ -9,14 +9,14 @@ import { flatten } from 'lodash';
 import { mergeTypes } from 'merge-graphql-schemas';
 import * as path from 'path';
 
-import { ConfigService } from '../config/config.service';
-import { I18nService } from '../i18n/i18n.service';
+import { ConfigService } from '../../config/config.service';
+import { I18nService } from '../../i18n/i18n.service';
 
 import { addGraphQLCustomFields } from './graphql-custom-fields';
 
 @Injectable()
 export class GraphqlConfigService implements GqlOptionsFactory {
-    readonly typePaths = path.join(__dirname, '/../**/*.graphql');
+    readonly typePaths = path.join(__dirname, '/../../**/*.graphql');
 
     constructor(private i18nService: I18nService, private configService: ConfigService) {}
 

+ 0 - 0
server/src/api/graphql-custom-fields.spec.ts → server/src/api/common/graphql-custom-fields.spec.ts


+ 0 - 0
server/src/api/graphql-custom-fields.ts → server/src/api/common/graphql-custom-fields.ts


+ 1 - 1
server/src/api/common/request-context.pipe.ts

@@ -1,7 +1,7 @@
 import { ArgumentMetadata, Injectable, PipeTransform } from '@nestjs/common';
 
 import { I18nError } from '../../i18n/i18n-error';
-import { ChannelService } from '../../service/channel.service';
+import { ChannelService } from '../../service/providers/channel.service';
 
 import { RequestContext } from './request-context';
 import { RequestContextService } from './request-context.service';

+ 1 - 1
server/src/api/common/request-context.service.ts

@@ -3,7 +3,7 @@ import { Request } from 'express';
 
 import { ConfigService } from '../../config/config.service';
 import { I18nError } from '../../i18n/i18n-error';
-import { ChannelService } from '../../service/channel.service';
+import { ChannelService } from '../../service/providers/channel.service';
 
 import { RequestContext } from './request-context';
 

+ 4 - 4
server/src/api/roles-guard.ts → server/src/api/common/roles-guard.ts

@@ -3,11 +3,11 @@ import { Reflector } from '@nestjs/core';
 import { ExtractJwt, Strategy } from 'passport-jwt';
 import { Permission } from 'shared/generated-types';
 
-import { idsAreEqual } from '../common/utils';
-import { ConfigService } from '../config/config.service';
-import { User } from '../entity/user/user.entity';
+import { idsAreEqual } from '../../common/utils';
+import { ConfigService } from '../../config/config.service';
+import { User } from '../../entity/user/user.entity';
 
-import { RequestContextService } from './common/request-context.service';
+import { RequestContextService } from './request-context.service';
 
 export const PERMISSIONS_METADATA_KEY = '__permissions__';
 

+ 0 - 29
server/src/api/jwt.strategy.ts

@@ -1,29 +0,0 @@
-import { Injectable, UnauthorizedException } from '@nestjs/common';
-import { PassportStrategy } from '@nestjs/passport';
-import { ExtractJwt, Strategy } from 'passport-jwt';
-
-import { ConfigService } from '../config/config.service';
-import { AuthService } from '../service/auth.service';
-
-import { JwtPayload } from '../common/types/auth-types';
-
-/**
- * Currently unused - see note at {@link AuthGuard}
- */
-@Injectable()
-export class JwtStrategy extends PassportStrategy(Strategy) {
-    constructor(private readonly authService: AuthService, private configService: ConfigService) {
-        super({
-            jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
-            secretOrKey: configService.jwtSecret,
-        });
-    }
-
-    async validate(payload: JwtPayload, done: (err: Error | null, user: any) => void) {
-        const user = await this.authService.validateUser(payload.identifier);
-        if (!user) {
-            return done(new UnauthorizedException(), false);
-        }
-        done(null, user);
-    }
-}

+ 2 - 2
server/src/api/administrator/administrator.resolver.ts → server/src/api/resolvers/administrator.resolver.ts

@@ -10,9 +10,9 @@ import {
 import { PaginatedList } from 'shared/shared-types';
 
 import { Administrator } from '../../entity/administrator/administrator.entity';
-import { AdministratorService } from '../../service/administrator.service';
+import { AdministratorService } from '../../service/providers/administrator.service';
 import { ApplyIdCodec } from '../common/apply-id-codec-decorator';
-import { Allow } from '../roles-guard';
+import { Allow } from '../common/roles-guard';
 
 @Resolver('Administrator')
 export class AdministratorResolver {

+ 2 - 2
server/src/api/asset/asset.resolver.ts → server/src/api/resolvers/asset.resolver.ts

@@ -3,9 +3,9 @@ import { CreateAssetsVariables, Permission } from 'shared/generated-types';
 import { PaginatedList } from 'shared/shared-types';
 
 import { Asset } from '../../entity/asset/asset.entity';
-import { AssetService } from '../../service/asset.service';
+import { AssetService } from '../../service/providers/asset.service';
 import { RequestContextPipe } from '../common/request-context.pipe';
-import { Allow } from '../roles-guard';
+import { Allow } from '../common/roles-guard';
 
 @Resolver('Assets')
 export class AssetResolver {

+ 3 - 3
server/src/api/auth/auth.resolver.ts → server/src/api/resolvers/auth.resolver.ts

@@ -3,9 +3,9 @@ import { Request } from 'express';
 import { Permission } from 'shared/generated-types';
 
 import { User } from '../../entity/user/user.entity';
-import { AuthService } from '../../service/auth.service';
-import { ChannelService } from '../../service/channel.service';
-import { Allow } from '../roles-guard';
+import { AuthService } from '../../service/providers/auth.service';
+import { ChannelService } from '../../service/providers/channel.service';
+import { Allow } from '../common/roles-guard';
 
 @Resolver('Auth')
 export class AuthResolver {

+ 2 - 2
server/src/api/channel/channel.resolver.ts → server/src/api/resolvers/channel.resolver.ts

@@ -2,8 +2,8 @@ import { Args, Mutation, Resolver } from '@nestjs/graphql';
 import { Permission } from 'shared/generated-types';
 
 import { Channel } from '../../entity/channel/channel.entity';
-import { ChannelService } from '../../service/channel.service';
-import { Allow } from '../roles-guard';
+import { ChannelService } from '../../service/providers/channel.service';
+import { Allow } from '../common/roles-guard';
 
 @Resolver('Channel')
 export class ChannelResolver {

+ 0 - 0
server/src/api/config/config.resolver.ts → server/src/api/resolvers/config.resolver.ts


+ 2 - 2
server/src/api/customer/customer.resolver.ts → server/src/api/resolvers/customer.resolver.ts

@@ -4,9 +4,9 @@ import { PaginatedList } from 'shared/shared-types';
 
 import { Address } from '../../entity/address/address.entity';
 import { Customer } from '../../entity/customer/customer.entity';
-import { CustomerService } from '../../service/customer.service';
+import { CustomerService } from '../../service/providers/customer.service';
 import { ApplyIdCodec } from '../common/apply-id-codec-decorator';
-import { Allow } from '../roles-guard';
+import { Allow } from '../common/roles-guard';
 
 @Resolver('Customer')
 export class CustomerResolver {

+ 3 - 3
server/src/api/facet/facet.resolver.ts → server/src/api/resolvers/facet.resolver.ts

@@ -13,10 +13,10 @@ import { Translated } from '../../common/types/locale-types';
 import { FacetValue } from '../../entity/facet-value/facet-value.entity';
 import { Facet } from '../../entity/facet/facet.entity';
 import { I18nError } from '../../i18n/i18n-error';
-import { FacetValueService } from '../../service/facet-value.service';
-import { FacetService } from '../../service/facet.service';
+import { FacetValueService } from '../../service/providers/facet-value.service';
+import { FacetService } from '../../service/providers/facet.service';
 import { ApplyIdCodec } from '../common/apply-id-codec-decorator';
-import { Allow } from '../roles-guard';
+import { Allow } from '../common/roles-guard';
 
 @Resolver('Facet')
 export class FacetResolver {

+ 3 - 3
server/src/api/product-option/product-option.resolver.ts → server/src/api/resolvers/product-option.resolver.ts

@@ -4,10 +4,10 @@ import { CreateProductOptionGroupVariables, Permission } from 'shared/generated-
 import { Translated } from '../../common/types/locale-types';
 import { ProductOptionGroup } from '../../entity/product-option-group/product-option-group.entity';
 import { ProductOption } from '../../entity/product-option/product-option.entity';
-import { ProductOptionGroupService } from '../../service/product-option-group.service';
-import { ProductOptionService } from '../../service/product-option.service';
+import { ProductOptionGroupService } from '../../service/providers/product-option-group.service';
+import { ProductOptionService } from '../../service/providers/product-option.service';
 import { ApplyIdCodec } from '../common/apply-id-codec-decorator';
-import { Allow } from '../roles-guard';
+import { Allow } from '../common/roles-guard';
 
 @Resolver('ProductOptionGroup')
 export class ProductOptionResolver {

+ 4 - 4
server/src/api/product/product.resolver.ts → server/src/api/resolvers/product.resolver.ts

@@ -19,13 +19,13 @@ import { assertFound } from '../../common/utils';
 import { ProductVariant } from '../../entity/product-variant/product-variant.entity';
 import { Product } from '../../entity/product/product.entity';
 import { I18nError } from '../../i18n/i18n-error';
-import { FacetValueService } from '../../service/facet-value.service';
-import { ProductVariantService } from '../../service/product-variant.service';
-import { ProductService } from '../../service/product.service';
+import { FacetValueService } from '../../service/providers/facet-value.service';
+import { ProductVariantService } from '../../service/providers/product-variant.service';
+import { ProductService } from '../../service/providers/product.service';
 import { ApplyIdCodec } from '../common/apply-id-codec-decorator';
 import { RequestContext } from '../common/request-context';
 import { RequestContextPipe } from '../common/request-context.pipe';
-import { Allow } from '../roles-guard';
+import { Allow } from '../common/roles-guard';
 
 @Resolver('Product')
 export class ProductResolver {

+ 2 - 2
server/src/api/role/role.resolver.ts → server/src/api/resolvers/role.resolver.ts

@@ -9,9 +9,9 @@ import {
 import { PaginatedList } from 'shared/shared-types';
 
 import { Role } from '../../entity/role/role.entity';
-import { RoleService } from '../../service/role.service';
+import { RoleService } from '../../service/providers/role.service';
 import { ApplyIdCodec } from '../common/apply-id-codec-decorator';
-import { Allow } from '../roles-guard';
+import { Allow } from '../common/roles-guard';
 
 @Resolver('Roles')
 export class RoleResolver {

+ 0 - 0
server/src/api/administrator/administrator.api.graphql → server/src/api/types/administrator.api.graphql


+ 0 - 0
server/src/api/asset/asset.api.graphql → server/src/api/types/asset.api.graphql


+ 0 - 0
server/src/api/auth/auth.api.graphql → server/src/api/types/auth.api.graphql


+ 0 - 0
server/src/api/channel/channel.api.graphql → server/src/api/types/channel.api.graphql


+ 0 - 0
server/src/api/config/config.api.graphql → server/src/api/types/config.api.graphql


+ 0 - 0
server/src/api/customer/customer.api.graphql → server/src/api/types/customer.api.graphql


+ 0 - 0
server/src/api/facet/facet.api.graphql → server/src/api/types/facet.api.graphql


+ 0 - 0
server/src/api/product-option/product-option.api.graphql → server/src/api/types/product-option.api.graphql


+ 0 - 0
server/src/api/product/product.api.graphql → server/src/api/types/product.api.graphql


+ 0 - 0
server/src/api/role/role.api.graphql → server/src/api/types/role.api.graphql


+ 0 - 6
server/src/entity/administrator/administrator.dto.ts

@@ -1,6 +0,0 @@
-export interface CreateAdministratorDto {
-    firstName: string;
-    lastName: string;
-    emailAddress: string;
-    password: string;
-}

+ 6 - 6
server/src/service/administrator.service.ts → server/src/service/providers/administrator.service.ts

@@ -5,13 +5,13 @@ import { SUPER_ADMIN_USER_IDENTIFIER, SUPER_ADMIN_USER_PASSWORD } from 'shared/s
 import { ID, PaginatedList } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
-import { ListQueryOptions } from '../common/types/common-types';
-import { Administrator } from '../entity/administrator/administrator.entity';
-import { User } from '../entity/user/user.entity';
-import { I18nError } from '../i18n/i18n-error';
+import { ListQueryOptions } from '../../common/types/common-types';
+import { Administrator } from '../../entity/administrator/administrator.entity';
+import { User } from '../../entity/user/user.entity';
+import { I18nError } from '../../i18n/i18n-error';
+import { buildListQuery } from '../helpers/build-list-query';
+import { patchEntity } from '../helpers/patch-entity';
 
-import { buildListQuery } from './helpers/build-list-query';
-import { patchEntity } from './helpers/patch-entity';
 import { PasswordService } from './password.service';
 import { RoleService } from './role.service';
 

+ 5 - 5
server/src/service/asset.service.ts → server/src/service/providers/asset.service.ts

@@ -4,12 +4,12 @@ import { CreateAssetInput } from 'shared/generated-types';
 import { ID, PaginatedList } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
-import { ListQueryOptions } from '../common/types/common-types';
-import { getAssetType } from '../common/utils';
-import { ConfigService } from '../config/config.service';
-import { Asset } from '../entity/asset/asset.entity';
+import { ListQueryOptions } from '../../common/types/common-types';
+import { getAssetType } from '../../common/utils';
+import { ConfigService } from '../../config/config.service';
+import { Asset } from '../../entity/asset/asset.entity';
 
-import { buildListQuery } from './helpers/build-list-query';
+import { buildListQuery } from '../helpers/build-list-query';
 
 @Injectable()
 export class AssetService {

+ 3 - 3
server/src/service/auth.service.ts → server/src/service/providers/auth.service.ts

@@ -4,9 +4,9 @@ import * as jwt from 'jsonwebtoken';
 import { Permission } from 'shared/generated-types';
 import { Connection } from 'typeorm';
 
-import { JwtPayload } from '../common/types/auth-types';
-import { ConfigService } from '../config/config.service';
-import { User } from '../entity/user/user.entity';
+import { JwtPayload } from '../../common/types/auth-types';
+import { ConfigService } from '../../config/config.service';
+import { User } from '../../entity/user/user.entity';
 
 import { PasswordService } from './password.service';
 

+ 5 - 5
server/src/service/channel.service.ts → server/src/service/providers/channel.service.ts

@@ -3,11 +3,11 @@ import { InjectConnection } from '@nestjs/typeorm';
 import { DEFAULT_CHANNEL_CODE } from 'shared/shared-constants';
 import { Connection } from 'typeorm';
 
-import { RequestContext } from '../api/common/request-context';
-import { DEFAULT_LANGUAGE_CODE } from '../common/constants';
-import { ChannelAware } from '../common/types/common-types';
-import { Channel } from '../entity/channel/channel.entity';
-import { I18nError } from '../i18n/i18n-error';
+import { RequestContext } from '../../api/common/request-context';
+import { DEFAULT_LANGUAGE_CODE } from '../../common/constants';
+import { ChannelAware } from '../../common/types/common-types';
+import { Channel } from '../../entity/channel/channel.entity';
+import { I18nError } from '../../i18n/i18n-error';
 
 @Injectable()
 export class ChannelService {

+ 8 - 8
server/src/service/customer.service.ts → server/src/service/providers/customer.service.ts

@@ -3,15 +3,15 @@ import { InjectConnection } from '@nestjs/typeorm';
 import { ID, PaginatedList } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
-import { ListQueryOptions } from '../common/types/common-types';
-import { CreateAddressDto } from '../entity/address/address.dto';
-import { Address } from '../entity/address/address.entity';
-import { CreateCustomerDto } from '../entity/customer/customer.dto';
-import { Customer } from '../entity/customer/customer.entity';
-import { User } from '../entity/user/user.entity';
-import { I18nError } from '../i18n/i18n-error';
+import { ListQueryOptions } from '../../common/types/common-types';
+import { CreateAddressDto } from '../../entity/address/address.dto';
+import { Address } from '../../entity/address/address.entity';
+import { CreateCustomerDto } from '../../entity/customer/customer.dto';
+import { Customer } from '../../entity/customer/customer.entity';
+import { User } from '../../entity/user/user.entity';
+import { I18nError } from '../../i18n/i18n-error';
+import { buildListQuery } from '../helpers/build-list-query';
 
-import { buildListQuery } from './helpers/build-list-query';
 import { PasswordService } from './password.service';
 import { RoleService } from './role.service';
 

+ 11 - 11
server/src/service/facet-value.service.ts → server/src/service/providers/facet-value.service.ts

@@ -9,18 +9,18 @@ import {
 import { ID } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
-import { DEFAULT_LANGUAGE_CODE } from '../common/constants';
-import { Translated } from '../common/types/locale-types';
-import { assertFound } from '../common/utils';
-import { FacetValueTranslation } from '../entity/facet-value/facet-value-translation.entity';
-import { FacetValue } from '../entity/facet-value/facet-value.entity';
-import { Facet } from '../entity/facet/facet.entity';
+import { DEFAULT_LANGUAGE_CODE } from '../../common/constants';
+import { Translated } from '../../common/types/locale-types';
+import { assertFound } from '../../common/utils';
+import { FacetValueTranslation } from '../../entity/facet-value/facet-value-translation.entity';
+import { FacetValue } from '../../entity/facet-value/facet-value.entity';
+import { Facet } from '../../entity/facet/facet.entity';
 
-import { ActiveConnection } from './helpers/connection.decorator';
-import { createTranslatable } from './helpers/create-translatable';
-import { translateDeep } from './helpers/translate-entity';
-import { TranslationUpdaterService } from './helpers/translation-updater.service';
-import { updateTranslatable } from './helpers/update-translatable';
+import { ActiveConnection } from '../helpers/connection.decorator';
+import { createTranslatable } from '../helpers/create-translatable';
+import { translateDeep } from '../helpers/translate-entity';
+import { TranslationUpdaterService } from '../helpers/translation-updater.service';
+import { updateTranslatable } from '../helpers/update-translatable';
 
 @Injectable()
 export class FacetValueService {

+ 12 - 12
server/src/service/facet.service.ts → server/src/service/providers/facet.service.ts

@@ -4,18 +4,18 @@ import { CreateFacetInput, LanguageCode, UpdateFacetInput } from 'shared/generat
 import { ID, PaginatedList } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
-import { DEFAULT_LANGUAGE_CODE } from '../common/constants';
-import { ListQueryOptions } from '../common/types/common-types';
-import { Translated } from '../common/types/locale-types';
-import { assertFound } from '../common/utils';
-import { FacetTranslation } from '../entity/facet/facet-translation.entity';
-import { Facet } from '../entity/facet/facet.entity';
-
-import { buildListQuery } from './helpers/build-list-query';
-import { createTranslatable } from './helpers/create-translatable';
-import { translateDeep } from './helpers/translate-entity';
-import { TranslationUpdaterService } from './helpers/translation-updater.service';
-import { updateTranslatable } from './helpers/update-translatable';
+import { DEFAULT_LANGUAGE_CODE } from '../../common/constants';
+import { ListQueryOptions } from '../../common/types/common-types';
+import { Translated } from '../../common/types/locale-types';
+import { assertFound } from '../../common/utils';
+import { FacetTranslation } from '../../entity/facet/facet-translation.entity';
+import { Facet } from '../../entity/facet/facet.entity';
+
+import { buildListQuery } from '../helpers/build-list-query';
+import { createTranslatable } from '../helpers/create-translatable';
+import { translateDeep } from '../helpers/translate-entity';
+import { TranslationUpdaterService } from '../helpers/translation-updater.service';
+import { updateTranslatable } from '../helpers/update-translatable';
 
 @Injectable()
 export class FacetService {

+ 0 - 0
server/src/service/password.service.ts → server/src/service/providers/password.service.ts


+ 10 - 10
server/src/service/product-option-group.service.ts → server/src/service/providers/product-option-group.service.ts

@@ -4,17 +4,17 @@ import { CreateProductOptionGroupInput, LanguageCode } from 'shared/generated-ty
 import { ID } from 'shared/shared-types';
 import { Connection, FindManyOptions, Like } from 'typeorm';
 
-import { DEFAULT_LANGUAGE_CODE } from '../common/constants';
-import { Translated } from '../common/types/locale-types';
-import { assertFound } from '../common/utils';
-import { ProductOptionGroupTranslation } from '../entity/product-option-group/product-option-group-translation.entity';
-import { UpdateProductOptionGroupDto } from '../entity/product-option-group/product-option-group.dto';
-import { ProductOptionGroup } from '../entity/product-option-group/product-option-group.entity';
+import { DEFAULT_LANGUAGE_CODE } from '../../common/constants';
+import { Translated } from '../../common/types/locale-types';
+import { assertFound } from '../../common/utils';
+import { ProductOptionGroupTranslation } from '../../entity/product-option-group/product-option-group-translation.entity';
+import { UpdateProductOptionGroupDto } from '../../entity/product-option-group/product-option-group.dto';
+import { ProductOptionGroup } from '../../entity/product-option-group/product-option-group.entity';
 
-import { createTranslatable } from './helpers/create-translatable';
-import { translateDeep } from './helpers/translate-entity';
-import { TranslationUpdaterService } from './helpers/translation-updater.service';
-import { updateTranslatable } from './helpers/update-translatable';
+import { createTranslatable } from '../helpers/create-translatable';
+import { translateDeep } from '../helpers/translate-entity';
+import { TranslationUpdaterService } from '../helpers/translation-updater.service';
+import { updateTranslatable } from '../helpers/update-translatable';
 
 @Injectable()
 export class ProductOptionGroupService {

+ 8 - 8
server/src/service/product-option.service.ts → server/src/service/providers/product-option.service.ts

@@ -4,15 +4,15 @@ import { CreateProductOptionInput, LanguageCode } from 'shared/generated-types';
 import { ID } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
-import { DEFAULT_LANGUAGE_CODE } from '../common/constants';
-import { Translated } from '../common/types/locale-types';
-import { assertFound } from '../common/utils';
-import { ProductOptionGroup } from '../entity/product-option-group/product-option-group.entity';
-import { ProductOptionTranslation } from '../entity/product-option/product-option-translation.entity';
-import { ProductOption } from '../entity/product-option/product-option.entity';
+import { DEFAULT_LANGUAGE_CODE } from '../../common/constants';
+import { Translated } from '../../common/types/locale-types';
+import { assertFound } from '../../common/utils';
+import { ProductOptionGroup } from '../../entity/product-option-group/product-option-group.entity';
+import { ProductOptionTranslation } from '../../entity/product-option/product-option-translation.entity';
+import { ProductOption } from '../../entity/product-option/product-option.entity';
 
-import { createTranslatable } from './helpers/create-translatable';
-import { translateDeep } from './helpers/translate-entity';
+import { createTranslatable } from '../helpers/create-translatable';
+import { translateDeep } from '../helpers/translate-entity';
 
 @Injectable()
 export class ProductOptionService {

+ 16 - 16
server/src/service/product-variant.service.ts → server/src/service/providers/product-variant.service.ts

@@ -5,23 +5,23 @@ import { ID } from 'shared/shared-types';
 import { generateAllCombinations } from 'shared/shared-utils';
 import { Connection } from 'typeorm';
 
-import { RequestContext } from '../api/common/request-context';
-import { DEFAULT_LANGUAGE_CODE } from '../common/constants';
-import { Translated } from '../common/types/locale-types';
-import { assertFound, idsAreEqual } from '../common/utils';
-import { FacetValue } from '../entity/facet-value/facet-value.entity';
-import { ProductOption } from '../entity/product-option/product-option.entity';
-import { CreateProductVariantDto } from '../entity/product-variant/create-product-variant.dto';
-import { ProductVariantPrice } from '../entity/product-variant/product-variant-price.entity';
-import { ProductVariantTranslation } from '../entity/product-variant/product-variant-translation.entity';
-import { ProductVariant } from '../entity/product-variant/product-variant.entity';
-import { Product } from '../entity/product/product.entity';
-import { I18nError } from '../i18n/i18n-error';
+import { RequestContext } from '../../api/common/request-context';
+import { DEFAULT_LANGUAGE_CODE } from '../../common/constants';
+import { Translated } from '../../common/types/locale-types';
+import { assertFound, idsAreEqual } from '../../common/utils';
+import { FacetValue } from '../../entity/facet-value/facet-value.entity';
+import { ProductOption } from '../../entity/product-option/product-option.entity';
+import { CreateProductVariantDto } from '../../entity/product-variant/create-product-variant.dto';
+import { ProductVariantPrice } from '../../entity/product-variant/product-variant-price.entity';
+import { ProductVariantTranslation } from '../../entity/product-variant/product-variant-translation.entity';
+import { ProductVariant } from '../../entity/product-variant/product-variant.entity';
+import { Product } from '../../entity/product/product.entity';
+import { I18nError } from '../../i18n/i18n-error';
 
-import { createTranslatable } from './helpers/create-translatable';
-import { translateDeep } from './helpers/translate-entity';
-import { TranslationUpdaterService } from './helpers/translation-updater.service';
-import { updateTranslatable } from './helpers/update-translatable';
+import { createTranslatable } from '../helpers/create-translatable';
+import { translateDeep } from '../helpers/translate-entity';
+import { TranslationUpdaterService } from '../helpers/translation-updater.service';
+import { updateTranslatable } from '../helpers/update-translatable';
 
 @Injectable()
 export class ProductVariantService {

+ 13 - 13
server/src/service/product.service.ts → server/src/service/providers/product.service.ts

@@ -4,22 +4,22 @@ import { CreateProductInput, UpdateProductInput } from 'shared/generated-types';
 import { ID, PaginatedList } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
-import { RequestContext } from '../api/common/request-context';
-import { ListQueryOptions } from '../common/types/common-types';
-import { Translated } from '../common/types/locale-types';
-import { assertFound, idsAreEqual } from '../common/utils';
-import { ProductOptionGroup } from '../entity/product-option-group/product-option-group.entity';
-import { ProductTranslation } from '../entity/product/product-translation.entity';
-import { Product } from '../entity/product/product.entity';
-import { I18nError } from '../i18n/i18n-error';
+import { RequestContext } from '../../api/common/request-context';
+import { ListQueryOptions } from '../../common/types/common-types';
+import { Translated } from '../../common/types/locale-types';
+import { assertFound, idsAreEqual } from '../../common/utils';
+import { ProductOptionGroup } from '../../entity/product-option-group/product-option-group.entity';
+import { ProductTranslation } from '../../entity/product/product-translation.entity';
+import { Product } from '../../entity/product/product.entity';
+import { I18nError } from '../../i18n/i18n-error';
+import { buildListQuery } from '../helpers/build-list-query';
+import { createTranslatable } from '../helpers/create-translatable';
+import { translateDeep } from '../helpers/translate-entity';
+import { TranslationUpdaterService } from '../helpers/translation-updater.service';
+import { updateTranslatable } from '../helpers/update-translatable';
 
 import { AssetService } from './asset.service';
 import { ChannelService } from './channel.service';
-import { buildListQuery } from './helpers/build-list-query';
-import { createTranslatable } from './helpers/create-translatable';
-import { translateDeep } from './helpers/translate-entity';
-import { TranslationUpdaterService } from './helpers/translation-updater.service';
-import { updateTranslatable } from './helpers/update-translatable';
 
 @Injectable()
 export class ProductService {

+ 7 - 7
server/src/service/role.service.ts → server/src/service/providers/role.service.ts

@@ -9,15 +9,15 @@ import {
 import { ID, PaginatedList } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
-import { ListQueryOptions } from '../common/types/common-types';
-import { assertFound } from '../common/utils';
-import { Role } from '../entity/role/role.entity';
-import { I18nError } from '../i18n/i18n-error';
+import { ListQueryOptions } from '../../common/types/common-types';
+import { assertFound } from '../../common/utils';
+import { Role } from '../../entity/role/role.entity';
+import { I18nError } from '../../i18n/i18n-error';
+import { buildListQuery } from '../helpers/build-list-query';
+import { ActiveConnection } from '../helpers/connection.decorator';
+import { patchEntity } from '../helpers/patch-entity';
 
 import { ChannelService } from './channel.service';
-import { buildListQuery } from './helpers/build-list-query';
-import { ActiveConnection } from './helpers/connection.decorator';
-import { patchEntity } from './helpers/patch-entity';
 
 @Injectable()
 export class RoleService {

+ 13 - 13
server/src/service/service.module.ts

@@ -4,20 +4,20 @@ import { TypeOrmModule } from '@nestjs/typeorm';
 import { ConfigModule } from '../config/config.module';
 import { getConfig } from '../config/vendure-config';
 
-import { AdministratorService } from './administrator.service';
-import { AssetService } from './asset.service';
-import { AuthService } from './auth.service';
-import { ChannelService } from './channel.service';
-import { CustomerService } from './customer.service';
-import { FacetValueService } from './facet-value.service';
-import { FacetService } from './facet.service';
 import { TranslationUpdaterService } from './helpers/translation-updater.service';
-import { PasswordService } from './password.service';
-import { ProductOptionGroupService } from './product-option-group.service';
-import { ProductOptionService } from './product-option.service';
-import { ProductVariantService } from './product-variant.service';
-import { ProductService } from './product.service';
-import { RoleService } from './role.service';
+import { AdministratorService } from './providers/administrator.service';
+import { AssetService } from './providers/asset.service';
+import { AuthService } from './providers/auth.service';
+import { ChannelService } from './providers/channel.service';
+import { CustomerService } from './providers/customer.service';
+import { FacetValueService } from './providers/facet-value.service';
+import { FacetService } from './providers/facet.service';
+import { PasswordService } from './providers/password.service';
+import { ProductOptionGroupService } from './providers/product-option-group.service';
+import { ProductOptionService } from './providers/product-option.service';
+import { ProductVariantService } from './providers/product-variant.service';
+import { ProductService } from './providers/product.service';
+import { RoleService } from './providers/role.service';
 
 const exportedProviders = [
     AdministratorService,