Browse Source

refactor(server): Use generated inputs to type resolver/service methods

Michael Bromley 7 years ago
parent
commit
50ee98ca8d

File diff suppressed because it is too large
+ 0 - 0
schema.json


+ 3 - 4
server/mock-data/mock-data-client.service.ts

@@ -1,11 +1,11 @@
 import * as faker from 'faker/locale/en_GB';
 import { request } from 'graphql-request';
 import {
+    CreateProductInput,
     CreateProductOptionGroup,
-    CreateProductOptionGroupInput,
     CreateProductOptionGroupVariables,
+    LanguageCode,
 } from 'shared/generated-types';
-import { LanguageCode } from 'shared/generated-types';
 import { ID } from 'shared/shared-types';
 
 import { CREATE_PRODUCT_OPTION_GROUP } from '../../admin-ui/src/app/data/mutations/product-mutations';
@@ -15,7 +15,6 @@ import { CreateAddressDto } from '../src/entity/address/address.dto';
 import { CreateAdministratorDto } from '../src/entity/administrator/administrator.dto';
 import { CreateCustomerDto } from '../src/entity/customer/customer.dto';
 import { Customer } from '../src/entity/customer/customer.entity';
-import { CreateProductDto } from '../src/entity/product/product.dto';
 import { Product } from '../src/entity/product/product.entity';
 import { TranslationInput } from '../src/locale/locale-types';
 
@@ -166,7 +165,7 @@ export class MockDataClientService {
                     translations: languageCodes.map(code =>
                         this.makeProductTranslation(code, name, slug, description),
                     ),
-                } as CreateProductDto,
+                } as CreateProductInput,
             };
 
             const product = await request<any>(this.apiUrl, query, variables).then(

+ 12 - 7
server/src/api/facet/facet.resolver.ts

@@ -1,8 +1,13 @@
 import { Mutation, Query, Resolver } from '@nestjs/graphql';
+import {
+    CreateFacetValuesVariables,
+    CreateFacetVariables,
+    UpdateFacetValuesVariables,
+    UpdateFacetVariables,
+} from 'shared/generated-types';
 import { PaginatedList } from 'shared/shared-types';
 
 import { DEFAULT_LANGUAGE_CODE } from '../../common/constants';
-import { CreateFacetValueDto, UpdateFacetValueDto } from '../../entity/facet-value/facet-value.dto';
 import { FacetValue } from '../../entity/facet-value/facet-value.entity';
 import { Facet } from '../../entity/facet/facet.entity';
 import { I18nError } from '../../i18n/i18n-error';
@@ -29,7 +34,7 @@ export class FacetResolver {
 
     @Mutation()
     @ApplyIdCodec()
-    async createFacet(_, args): Promise<Translated<Facet>> {
+    async createFacet(_, args: CreateFacetVariables): Promise<Translated<Facet>> {
         const { input } = args;
         const facet = await this.facetService.create(args.input);
 
@@ -44,15 +49,15 @@ export class FacetResolver {
 
     @Mutation()
     @ApplyIdCodec()
-    async updateFacet(_, args): Promise<Translated<Facet>> {
+    async updateFacet(_, args: UpdateFacetVariables): Promise<Translated<Facet>> {
         const { input } = args;
         return this.facetService.update(args.input);
     }
 
     @Mutation()
     @ApplyIdCodec()
-    async createFacetValues(_, args): Promise<Array<Translated<FacetValue>>> {
-        const { input } = args as { input: CreateFacetValueDto[] };
+    async createFacetValues(_, args: CreateFacetValuesVariables): Promise<Array<Translated<FacetValue>>> {
+        const { input } = args;
         const facetId = input[0].facetId;
         const facet = await this.facetService.findOne(facetId, DEFAULT_LANGUAGE_CODE);
         if (!facet) {
@@ -63,8 +68,8 @@ export class FacetResolver {
 
     @Mutation()
     @ApplyIdCodec()
-    async updateFacetValues(_, args): Promise<Array<Translated<FacetValue>>> {
-        const { input } = args as { input: UpdateFacetValueDto[] };
+    async updateFacetValues(_, args: UpdateFacetValuesVariables): Promise<Array<Translated<FacetValue>>> {
+        const { input } = args;
         return Promise.all(input.map(facetValue => this.facetValueService.update(facetValue)));
     }
 }

+ 5 - 1
server/src/api/product-option/product-option.resolver.ts

@@ -1,4 +1,5 @@
 import { Mutation, Query, ResolveProperty, Resolver } from '@nestjs/graphql';
+import { CreateProductOptionGroupVariables } from 'shared/generated-types';
 
 import { ProductOptionGroup } from '../../entity/product-option-group/product-option-group.entity';
 import { ProductOption } from '../../entity/product-option/product-option.entity';
@@ -38,7 +39,10 @@ export class ProductOptionResolver {
 
     @Mutation()
     @ApplyIdCodec()
-    async createProductOptionGroup(_, args): Promise<Translated<ProductOptionGroup>> {
+    async createProductOptionGroup(
+        _,
+        args: CreateProductOptionGroupVariables,
+    ): Promise<Translated<ProductOptionGroup>> {
         const { input } = args;
         const group = await this.productOptionGroupService.create(args.input);
 

+ 7 - 4
server/src/api/product/product.resolver.ts

@@ -1,9 +1,9 @@
 import { Mutation, Query, Resolver } from '@nestjs/graphql';
+import { CreateProductVariables, UpdateProductVariantsVariables } from 'shared/generated-types';
 import { ID, PaginatedList } from 'shared/shared-types';
 
 import { DEFAULT_LANGUAGE_CODE } from '../../common/constants';
 import { assertFound } from '../../common/utils';
-import { UpdateProductVariantDto } from '../../entity/product-variant/create-product-variant.dto';
 import { ProductVariant } from '../../entity/product-variant/product-variant.entity';
 import { Product } from '../../entity/product/product.entity';
 import { I18nError } from '../../i18n/i18n-error';
@@ -35,7 +35,7 @@ export class ProductResolver {
 
     @Mutation()
     @ApplyIdCodec()
-    async createProduct(_, args): Promise<Translated<Product>> {
+    async createProduct(_, args: CreateProductVariables): Promise<Translated<Product>> {
         const { input } = args;
         return this.productService.create(input);
     }
@@ -71,8 +71,11 @@ export class ProductResolver {
 
     @Mutation()
     @ApplyIdCodec()
-    async updateProductVariants(_, args): Promise<Array<Translated<ProductVariant>>> {
-        const { input } = args as { input: UpdateProductVariantDto[] };
+    async updateProductVariants(
+        _,
+        args: UpdateProductVariantsVariables,
+    ): Promise<Array<Translated<ProductVariant>>> {
+        const { input } = args;
         return Promise.all(input.map(variant => this.productVariantService.update(variant)));
     }
 

+ 0 - 1
server/src/common/create-translatable.ts

@@ -1,7 +1,6 @@
 import { Type } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
-import { ProductOptionTranslation } from '../entity/product-option/product-option-translation.entity';
 import { Translatable, TranslatedInput, Translation } from '../locale/locale-types';
 
 /**

+ 0 - 15
server/src/entity/facet-value/facet-value.dto.ts

@@ -1,15 +0,0 @@
-import { ID } from 'shared/shared-types';
-
-import { TranslatedInput } from '../../locale/locale-types';
-
-import { FacetValue } from './facet-value.entity';
-
-export interface CreateFacetValueDto extends TranslatedInput<FacetValue> {
-    facetId: ID;
-    code: string;
-}
-
-export interface UpdateFacetValueDto extends TranslatedInput<FacetValue> {
-    id: ID;
-    code: string;
-}

+ 0 - 14
server/src/entity/facet/facet.dto.ts

@@ -1,14 +0,0 @@
-import { TranslatedInput } from '../../locale/locale-types';
-import { CreateFacetValueDto } from '../facet-value/facet-value.dto';
-
-import { Facet } from './facet.entity';
-
-export interface CreateFacetDto extends TranslatedInput<Facet> {
-    code: string;
-    values?: CreateFacetValueDto[];
-}
-
-export interface UpdateFacetDto extends TranslatedInput<Facet> {
-    id: string;
-    code?: string;
-}

+ 0 - 6
server/src/entity/product-option-group/product-option-group.dto.ts

@@ -1,13 +1,7 @@
 import { TranslatedInput } from '../../locale/locale-types';
-import { CreateProductOptionDto } from '../product-option/product-option.dto';
 
 import { ProductOptionGroup } from './product-option-group.entity';
 
-export interface CreateProductOptionGroupDto extends TranslatedInput<ProductOptionGroup> {
-    code: string;
-    options?: CreateProductOptionDto[];
-}
-
 export interface UpdateProductOptionGroupDto extends TranslatedInput<ProductOptionGroup> {
     id: string;
     code?: string;

+ 0 - 7
server/src/entity/product-option/product-option.dto.ts

@@ -1,7 +0,0 @@
-import { TranslatedInput } from '../../locale/locale-types';
-
-import { ProductOption } from './product-option.entity';
-
-export interface CreateProductOptionDto extends TranslatedInput<ProductOption> {
-    code?: string;
-}

+ 0 - 8
server/src/entity/product-variant/create-product-variant.dto.ts

@@ -10,11 +10,3 @@ export interface CreateProductVariantDto extends TranslatedInput<ProductVariant>
     image?: string;
     optionCodes?: string[];
 }
-
-export interface UpdateProductVariantDto extends TranslatedInput<ProductVariant> {
-    id: ID;
-    sku: string;
-    price: number;
-    image?: string;
-    optionCodes?: string[];
-}

+ 1 - 1
server/src/entity/product-variant/product-variant.graphql

@@ -31,7 +31,7 @@ input CreateProductVariantInput {
     sku: String!
     image: String
     price: Int!
-    optionCodes: [String]
+    optionCodes: [String!]
 }
 
 input UpdateProductVariantInput {

+ 3 - 4
server/src/entity/product/product-translation.entity.ts

@@ -1,9 +1,8 @@
 import { LanguageCode } from 'shared/generated-types';
-import { DeepPartial } from 'shared/shared-types';
-import { HasCustomFields } from 'shared/shared-types';
+import { DeepPartial, HasCustomFields } from 'shared/shared-types';
 import { Column, Entity, ManyToOne } from 'typeorm';
 
-import { Translation, TranslationInput } from '../../locale/locale-types';
+import { Translation } from '../../locale/locale-types';
 import { VendureEntity } from '../base/base.entity';
 import { CustomProductFieldsTranslation } from '../custom-entity-fields';
 
@@ -11,7 +10,7 @@ import { Product } from './product.entity';
 
 @Entity()
 export class ProductTranslation extends VendureEntity implements Translation<Product>, HasCustomFields {
-    constructor(input?: DeepPartial<TranslationInput<Product>>) {
+    constructor(input?: DeepPartial<Translation<Product>>) {
         super(input);
     }
 

+ 0 - 15
server/src/entity/product/product.dto.ts

@@ -1,15 +0,0 @@
-import { TranslatedInput } from '../../locale/locale-types';
-import { CreateProductVariantDto } from '../product-variant/create-product-variant.dto';
-
-import { Product } from './product.entity';
-
-export interface CreateProductDto extends TranslatedInput<Product> {
-    image?: string;
-    optionGroupCodes?: [string];
-}
-
-export interface UpdateProductDto extends TranslatedInput<Product> {
-    id: string;
-    image?: string;
-    optionGroupCodes?: [string];
-}

+ 7 - 7
server/src/entity/product/product.graphql

@@ -19,26 +19,26 @@ type ProductTranslation {
     languageCode: LanguageCode!
     name: String!
     slug: String!
-    description: String
+    description: String!
 }
 
 input ProductTranslationInput {
     id: ID
     languageCode: LanguageCode!
     name: String!
-    slug: String
-    description: String
+    slug: String!
+    description: String!
 }
 
 input CreateProductInput {
     image: String
-    translations: [ProductTranslationInput]!
-    optionGroupCodes: [String]
+    translations: [ProductTranslationInput!]!
+    optionGroupCodes: [String!]
 }
 
 input UpdateProductInput {
     id: ID!
     image: String
-    translations: [ProductTranslationInput]!
-    optionGroupCodes: [String]
+    translations: [ProductTranslationInput!]!
+    optionGroupCodes: [String!]
 }

+ 1 - 1
server/src/locale/locale-types.ts

@@ -44,7 +44,7 @@ export type Translation<T> =
  * This is the type of a translation object when provided as input to a create or update operation.
  */
 export type TranslationInput<T> = { [K in TranslatableKeys<T>]: string } & {
-    id?: ID;
+    id?: ID | null;
     languageCode: LanguageCode;
 };
 

+ 16 - 4
server/src/locale/translation-updater.spec.ts

@@ -48,7 +48,10 @@ describe('TranslationUpdater', () => {
                 },
             ];
 
-            const diff = new TranslationUpdater(ProductTranslation, entityManager).diff(existing, updated);
+            const diff = new TranslationUpdater(ProductTranslation as any, entityManager).diff(
+                existing,
+                updated,
+            );
             expect(diff.toUpdate).toEqual(existing);
         });
 
@@ -67,14 +70,20 @@ describe('TranslationUpdater', () => {
                     description: '',
                 },
             ];
-            const diff = new TranslationUpdater(ProductTranslation, entityManager).diff(existing, updated);
+            const diff = new TranslationUpdater(ProductTranslation as any, entityManager).diff(
+                existing,
+                updated,
+            );
             expect(diff.toAdd).toEqual(updated);
         });
 
         it('correctly marks translations for removal', async () => {
             const updated = [];
 
-            const diff = new TranslationUpdater(ProductTranslation, entityManager).diff(existing, updated);
+            const diff = new TranslationUpdater(ProductTranslation as any, entityManager).diff(
+                existing,
+                updated,
+            );
             expect(diff.toRemove).toEqual(existing);
         });
 
@@ -93,7 +102,10 @@ describe('TranslationUpdater', () => {
                     description: '',
                 },
             ];
-            const diff = new TranslationUpdater(ProductTranslation, entityManager).diff(existing, updated);
+            const diff = new TranslationUpdater(ProductTranslation as any, entityManager).diff(
+                existing,
+                updated,
+            );
             expect(diff.toUpdate).toEqual([existing[0]]);
             expect(diff.toAdd).toEqual([updated[1]]);
             expect(diff.toRemove).toEqual([existing[1]]);

+ 3 - 4
server/src/service/facet-value.service.ts

@@ -1,6 +1,6 @@
 import { Injectable } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
-import { LanguageCode } from 'shared/generated-types';
+import { CreateFacetValueInput, LanguageCode, UpdateFacetValueInput } from 'shared/generated-types';
 import { ID } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
@@ -9,7 +9,6 @@ import { createTranslatable } from '../common/create-translatable';
 import { updateTranslatable } from '../common/update-translatable';
 import { assertFound } from '../common/utils';
 import { FacetValueTranslation } from '../entity/facet-value/facet-value-translation.entity';
-import { CreateFacetValueDto, UpdateFacetValueDto } from '../entity/facet-value/facet-value.dto';
 import { FacetValue } from '../entity/facet-value/facet-value.entity';
 import { Facet } from '../entity/facet/facet.entity';
 import { Translated } from '../locale/locale-types';
@@ -39,13 +38,13 @@ export class FacetValueService {
             .then(facetValue => facetValue && translateDeep(facetValue, lang));
     }
 
-    async create(facet: Facet, createFacetValueDto: CreateFacetValueDto): Promise<Translated<FacetValue>> {
+    async create(facet: Facet, createFacetValueDto: CreateFacetValueInput): Promise<Translated<FacetValue>> {
         const save = createTranslatable(FacetValue, FacetValueTranslation, fv => (fv.facet = facet));
         const facetValue = await save(this.connection, createFacetValueDto);
         return assertFound(this.findOne(facetValue.id, DEFAULT_LANGUAGE_CODE));
     }
 
-    async update(updateFacetValueDto: UpdateFacetValueDto): Promise<Translated<FacetValue>> {
+    async update(updateFacetValueDto: UpdateFacetValueInput): Promise<Translated<FacetValue>> {
         const save = updateTranslatable(FacetValue, FacetValueTranslation, this.translationUpdaterService);
         const facetValue = await save(this.connection, updateFacetValueDto);
         return assertFound(this.findOne(facetValue.id, DEFAULT_LANGUAGE_CODE));

+ 3 - 4
server/src/service/facet.service.ts

@@ -1,6 +1,6 @@
 import { Injectable } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
-import { LanguageCode } from 'shared/generated-types';
+import { CreateFacetInput, LanguageCode, UpdateFacetInput } from 'shared/generated-types';
 import { ID, PaginatedList } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
@@ -11,7 +11,6 @@ import { createTranslatable } from '../common/create-translatable';
 import { updateTranslatable } from '../common/update-translatable';
 import { assertFound } from '../common/utils';
 import { FacetTranslation } from '../entity/facet/facet-translation.entity';
-import { CreateFacetDto, UpdateFacetDto } from '../entity/facet/facet.dto';
 import { Facet } from '../entity/facet/facet.entity';
 import { Translated } from '../locale/locale-types';
 import { translateDeep } from '../locale/translate-entity';
@@ -46,13 +45,13 @@ export class FacetService {
             .then(facet => facet && translateDeep(facet, lang, ['values']));
     }
 
-    async create(createFacetDto: CreateFacetDto): Promise<Translated<Facet>> {
+    async create(createFacetDto: CreateFacetInput): Promise<Translated<Facet>> {
         const save = createTranslatable(Facet, FacetTranslation);
         const facet = await save(this.connection, createFacetDto);
         return assertFound(this.findOne(facet.id, DEFAULT_LANGUAGE_CODE));
     }
 
-    async update(updateFacetDto: UpdateFacetDto): Promise<Translated<Facet>> {
+    async update(updateFacetDto: UpdateFacetInput): Promise<Translated<Facet>> {
         const save = updateTranslatable(Facet, FacetTranslation, this.translationUpdaterService);
         const facet = await save(this.connection, updateFacetDto);
         return assertFound(this.findOne(facet.id, DEFAULT_LANGUAGE_CODE));

+ 3 - 6
server/src/service/product-option-group.service.ts

@@ -1,6 +1,6 @@
 import { Injectable } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
-import { LanguageCode } from 'shared/generated-types';
+import { CreateProductOptionGroupInput, LanguageCode } from 'shared/generated-types';
 import { ID } from 'shared/shared-types';
 import { Connection, FindManyOptions, Like } from 'typeorm';
 
@@ -9,10 +9,7 @@ import { createTranslatable } from '../common/create-translatable';
 import { updateTranslatable } from '../common/update-translatable';
 import { assertFound } from '../common/utils';
 import { ProductOptionGroupTranslation } from '../entity/product-option-group/product-option-group-translation.entity';
-import {
-    CreateProductOptionGroupDto,
-    UpdateProductOptionGroupDto,
-} from '../entity/product-option-group/product-option-group.dto';
+import { UpdateProductOptionGroupDto } from '../entity/product-option-group/product-option-group.dto';
 import { ProductOptionGroup } from '../entity/product-option-group/product-option-group.entity';
 import { Translated } from '../locale/locale-types';
 import { translateDeep } from '../locale/translate-entity';
@@ -48,7 +45,7 @@ export class ProductOptionGroupService {
     }
 
     async create(
-        createProductOptionGroupDto: CreateProductOptionGroupDto,
+        createProductOptionGroupDto: CreateProductOptionGroupInput,
     ): Promise<Translated<ProductOptionGroup>> {
         const save = createTranslatable(ProductOptionGroup, ProductOptionGroupTranslation);
         const group = await save(this.connection, createProductOptionGroupDto);

+ 2 - 3
server/src/service/product-option.service.ts

@@ -1,6 +1,6 @@
 import { Injectable } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
-import { LanguageCode } from 'shared/generated-types';
+import { CreateProductOptionInput, LanguageCode } from 'shared/generated-types';
 import { ID } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
@@ -9,7 +9,6 @@ import { createTranslatable } from '../common/create-translatable';
 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 { CreateProductOptionDto } from '../entity/product-option/product-option.dto';
 import { ProductOption } from '../entity/product-option/product-option.entity';
 import { Translated } from '../locale/locale-types';
 import { translateDeep } from '../locale/translate-entity';
@@ -36,7 +35,7 @@ export class ProductOptionService {
 
     async create(
         group: ProductOptionGroup,
-        createProductOptionDto: CreateProductOptionDto,
+        createProductOptionDto: CreateProductOptionInput,
     ): Promise<Translated<ProductOption>> {
         const save = createTranslatable(ProductOption, ProductOptionTranslation, po => (po.group = group));
         const option = await save(this.connection, createProductOptionDto);

+ 3 - 5
server/src/service/product-variant.service.ts

@@ -1,5 +1,6 @@
 import { Injectable } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
+import { UpdateProductVariantInput } from 'shared/generated-types';
 import { ID } from 'shared/shared-types';
 import { generateAllCombinations } from 'shared/shared-utils';
 import { Connection } from 'typeorm';
@@ -10,10 +11,7 @@ import { updateTranslatable } from '../common/update-translatable';
 import { assertFound } from '../common/utils';
 import { FacetValue } from '../entity/facet-value/facet-value.entity';
 import { ProductOption } from '../entity/product-option/product-option.entity';
-import {
-    CreateProductVariantDto,
-    UpdateProductVariantDto,
-} from '../entity/product-variant/create-product-variant.dto';
+import { CreateProductVariantDto } from '../entity/product-variant/create-product-variant.dto';
 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';
@@ -45,7 +43,7 @@ export class ProductVariantService {
         return save(this.connection, createProductVariantDto);
     }
 
-    async update(updateProductVariantsDto: UpdateProductVariantDto): Promise<Translated<ProductVariant>> {
+    async update(updateProductVariantsDto: UpdateProductVariantInput): Promise<Translated<ProductVariant>> {
         const save = updateTranslatable(
             ProductVariant,
             ProductVariantTranslation,

+ 2 - 3
server/src/service/product.service.spec.ts

@@ -1,10 +1,9 @@
 import { Test } from '@nestjs/testing';
-import { LanguageCode } from 'shared/generated-types';
+import { LanguageCode, UpdateProductInput } from 'shared/generated-types';
 import { Connection } from 'typeorm';
 
 import { ProductOptionGroup } from '../entity/product-option-group/product-option-group.entity';
 import { ProductTranslation } from '../entity/product/product-translation.entity';
-import { UpdateProductDto } from '../entity/product/product.dto';
 import { Product } from '../entity/product/product.entity';
 import { MockTranslationUpdaterService } from '../locale/translation-updater.mock';
 import { TranslationUpdaterService } from '../locale/translation-updater.service';
@@ -119,7 +118,7 @@ describe('ProductService', () => {
             const translationUpdater = translationUpdaterService.mockUpdater;
             translationUpdater.applyDiff.mockReturnValue(Promise.resolve(productFromApplyDiffCall));
 
-            const dto: UpdateProductDto = {
+            const dto: UpdateProductInput = {
                 id: '1',
                 image: 'some-image',
                 translations: [],

+ 3 - 4
server/src/service/product.service.ts

@@ -1,6 +1,6 @@
 import { Injectable } from '@nestjs/common';
 import { InjectConnection } from '@nestjs/typeorm';
-import { LanguageCode } from 'shared/generated-types';
+import { CreateProductInput, LanguageCode, UpdateProductInput } from 'shared/generated-types';
 import { ID, PaginatedList } from 'shared/shared-types';
 import { Connection } from 'typeorm';
 
@@ -12,7 +12,6 @@ import { updateTranslatable } from '../common/update-translatable';
 import { assertFound } from '../common/utils';
 import { ProductOptionGroup } from '../entity/product-option-group/product-option-group.entity';
 import { ProductTranslation } from '../entity/product/product-translation.entity';
-import { CreateProductDto, UpdateProductDto } from '../entity/product/product.dto';
 import { Product } from '../entity/product/product.entity';
 import { I18nError } from '../i18n/i18n-error';
 import { Translated } from '../locale/locale-types';
@@ -67,7 +66,7 @@ export class ProductService {
             );
     }
 
-    async create(createProductDto: CreateProductDto): Promise<Translated<Product>> {
+    async create(createProductDto: CreateProductInput): Promise<Translated<Product>> {
         const save = createTranslatable(Product, ProductTranslation, async p => {
             const { optionGroupCodes } = createProductDto;
             if (optionGroupCodes && optionGroupCodes.length) {
@@ -80,7 +79,7 @@ export class ProductService {
         return assertFound(this.findOne(product.id, DEFAULT_LANGUAGE_CODE));
     }
 
-    async update(updateProductDto: UpdateProductDto): Promise<Translated<Product>> {
+    async update(updateProductDto: UpdateProductInput): Promise<Translated<Product>> {
         const save = updateTranslatable(Product, ProductTranslation, this.translationUpdaterService);
         const product = await save(this.connection, updateProductDto);
         return assertFound(this.findOne(product.id, DEFAULT_LANGUAGE_CODE));

+ 11 - 11
shared/generated-types.ts

@@ -258,7 +258,7 @@ export interface UpdateProduct_updateProduct_translations {
   languageCode: LanguageCode;
   name: string;
   slug: string;
-  description: string | null;
+  description: string;
 }
 
 export interface UpdateProduct_updateProduct_optionGroups {
@@ -340,7 +340,7 @@ export interface CreateProduct_createProduct_translations {
   languageCode: LanguageCode;
   name: string;
   slug: string;
-  description: string | null;
+  description: string;
 }
 
 export interface CreateProduct_createProduct_optionGroups {
@@ -422,7 +422,7 @@ export interface GenerateProductVariants_generateVariantsForProduct_translations
   languageCode: LanguageCode;
   name: string;
   slug: string;
-  description: string | null;
+  description: string;
 }
 
 export interface GenerateProductVariants_generateVariantsForProduct_optionGroups {
@@ -890,7 +890,7 @@ export interface GetProductWithVariants_product_translations {
   languageCode: LanguageCode;
   name: string;
   slug: string;
-  description: string | null;
+  description: string;
 }
 
 export interface GetProductWithVariants_product_optionGroups {
@@ -1139,7 +1139,7 @@ export interface ProductWithVariants_translations {
   languageCode: LanguageCode;
   name: string;
   slug: string;
-  description: string | null;
+  description: string;
 }
 
 export interface ProductWithVariants_optionGroups {
@@ -1470,8 +1470,8 @@ export interface CreateProductCustomFieldsInput {
 
 export interface CreateProductInput {
   image?: string | null;
-  translations: (ProductTranslationInput | null)[];
-  optionGroupCodes?: (string | null)[] | null;
+  translations: ProductTranslationInput[];
+  optionGroupCodes?: string[] | null;
   customFields?: CreateProductCustomFieldsInput | null;
 }
 
@@ -1584,8 +1584,8 @@ export interface ProductTranslationInput {
   id?: string | null;
   languageCode: LanguageCode;
   name: string;
-  slug?: string | null;
-  description?: string | null;
+  slug: string;
+  description: string;
   customFields?: ProductTranslationCustomFieldsInput | null;
 }
 
@@ -1632,8 +1632,8 @@ export interface UpdateProductCustomFieldsInput {
 export interface UpdateProductInput {
   id: string;
   image?: string | null;
-  translations: (ProductTranslationInput | null)[];
-  optionGroupCodes?: (string | null)[] | null;
+  translations: ProductTranslationInput[];
+  optionGroupCodes?: string[] | null;
   customFields?: UpdateProductCustomFieldsInput | null;
 }
 

Some files were not shown because too many files changed in this diff