Merge branch 'master' into 104-focus-point-mutation

This commit is contained in:
Anders Gustafsson
2021-09-07 12:45:36 +02:00
4 changed files with 46 additions and 24 deletions
+12 -14
View File
@@ -3,7 +3,7 @@ import {
InteriorsFilter, InteriorsFilter,
InteriorType, InteriorType,
} from '../types/interior-types'; } from '../types/interior-types';
import { Orientation, ProductGroup } from '../types/product-types'; import { Orientation } from '../types/product-types';
import { Maybe } from '../types/types'; import { Maybe } from '../types/types';
import { BaseSQLDataSource } from './BaseSQLDataSource'; import { BaseSQLDataSource } from './BaseSQLDataSource';
import { ImageServerApi } from './imageserver-api'; import { ImageServerApi } from './imageserver-api';
@@ -18,22 +18,18 @@ export class InteriorAPI extends BaseSQLDataSource {
this.imageServerApi = imageServerApi; this.imageServerApi = imageServerApi;
} }
getInteriorType(productGroup: ProductGroup): string { getInteriorType(roomTypePart: string): string {
switch (productGroup) { switch (roomTypePart) {
case ProductGroup.DESIGNER_WALLPAPER: case 'wallpaper':
case ProductGroup.WALLPAPER:
case ProductGroup.PHOTO_WALLPAPER:
return InteriorType[InteriorType.WALLPAPER]; return InteriorType[InteriorType.WALLPAPER];
case ProductGroup.CANVAS: case 'painting':
return InteriorType[InteriorType.PAINTING]; return InteriorType[InteriorType.PAINTING];
case ProductGroup.POSTER: case 'poster':
return InteriorType[InteriorType.POSTER]; return InteriorType[InteriorType.POSTER];
case ProductGroup.FRAMED_PRINT: case 'framed-print':
return InteriorType[InteriorType.FRAMED_PRINT]; return InteriorType[InteriorType.FRAMED_PRINT];
default: default:
throw new Error( throw new Error(`Unknown room type: ${roomTypePart}`);
`Could not define interior type from product group [${productGroup}]`,
);
} }
} }
@@ -55,12 +51,13 @@ export class InteriorAPI extends BaseSQLDataSource {
} }
decorateRow(row: any): Interior { decorateRow(row: any): Interior {
console.log('row', row);
if (row.roomName) { if (row.roomName) {
const parts = row.roomName.split('_'); const parts = row.roomName.split('_');
row.roomNumber = this.getInteriorRoomNumber(parts[0]); row.roomNumber = this.getInteriorRoomNumber(parts[0]);
row.type = this.getInteriorType(parts[1]);
row.orientation = this.getInteriorOrientation(parts[2]); row.orientation = this.getInteriorOrientation(parts[2]);
} }
row.type = this.getInteriorType(row.productGroup);
return row; return row;
} }
@@ -78,6 +75,7 @@ export class InteriorAPI extends BaseSQLDataSource {
...row, ...row,
roomName: row.name, roomName: row.name,
roomType: row.roomtype, roomType: row.roomtype,
id: row.s3_suffix,
}; };
this.decorateRow(res); this.decorateRow(res);
return res; return res;
@@ -118,7 +116,7 @@ export class InteriorAPI extends BaseSQLDataSource {
return rows.map((row) => { return rows.map((row) => {
const res = { const res = {
...row, ...row,
id: row.interiorId, id: row.uri,
}; };
this.decorateRow(res); this.decorateRow(res);
return res; return res;
+23 -5
View File
@@ -104,6 +104,8 @@ export class ProductAPI extends BaseSQLDataSource {
row.fields = this.getProductFields(row); row.fields = this.getProductFields(row);
row.designerId = row.designerid; row.designerId = row.designerid;
row.orientation = this.getOrientation(row.fields); row.orientation = this.getOrientation(row.fields);
row.copyright = row.copyright ?? '';
row.batch = row.batch ?? '';
return row; return row;
} }
@@ -170,10 +172,11 @@ export class ProductAPI extends BaseSQLDataSource {
): Promise<void> { ): Promise<void> {
return this.knex.raw( return this.knex.raw(
/* sql */ ` /* sql */ `
UPDATE "product-products_fields" SET value = ? INSERT INTO "product-products_fields" (productid, fieldid, value, inserted, updated)
WHERE productid = ? VALUES (?, (SELECT fieldid FROM "product-fields" WHERE field = ?), ?, now(), now())
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = ?)`, ON CONFLICT (productid, fieldid)
[value, productId, field], DO UPDATE SET "value" = ?`,
[productId, field, value, value],
); );
} }
@@ -189,7 +192,7 @@ export class ProductAPI extends BaseSQLDataSource {
path: info.path, path: info.path,
browsable: info.browsable ? 1 : 0, browsable: info.browsable ? 1 : 0,
visible: info.visible ? 1 : 0, visible: info.visible ? 1 : 0,
designerid: info.designerId, designerid: info.designerId ?? null,
ref1: info.ref1, ref1: info.ref1,
ref2: info.ref2, ref2: info.ref2,
ref3: info.ref3, ref3: info.ref3,
@@ -199,6 +202,21 @@ export class ProductAPI extends BaseSQLDataSource {
this.updateProductField(productId, 'name', info.name), this.updateProductField(productId, 'name', info.name),
this.updateProductField(productId, 'batch', info.batch), this.updateProductField(productId, 'batch', info.batch),
this.updateProductField(productId, 'copyright', info.copyright), this.updateProductField(productId, 'copyright', info.copyright),
this.updateProductField(
productId,
'print_file_width',
info.printFileWidth.toString(),
),
this.updateProductField(
productId,
'print_file_height',
info.printFileHeight.toString(),
),
this.updateProductField(
productId,
'print_file_dpi',
info.printFileDpi.toString(),
),
); );
return Promise.all(promises); return Promise.all(promises);
} }
+6 -3
View File
@@ -262,7 +262,7 @@ type ProductFields {
photowallResolution: Int photowallResolution: Int
canvasResolution: Int canvasResolution: Int
wallpaperResolution: Int wallpaperResolution: Int
copyright: String copyright: String!
proportionsWarning: String proportionsWarning: String
marginWidthMax: Int marginWidthMax: Int
marginWidthMin: Int marginWidthMin: Int
@@ -272,7 +272,7 @@ type ProductFields {
focusYpoint: Float focusYpoint: Float
focusXpoint2: Float focusXpoint2: Float
focusYpoint2: Float focusYpoint2: Float
batch: String batch: String!
imageResolution: Int imageResolution: Int
printFileWidth: Int printFileWidth: Int
printFileHeight: Int printFileHeight: Int
@@ -383,9 +383,12 @@ input ProductInfoInput {
ref1: String! ref1: String!
ref2: String! ref2: String!
ref3: String! ref3: String!
designerId: Int! designerId: Int
browsable: Boolean! browsable: Boolean!
visible: Boolean! visible: Boolean!
printFileWidth: Int!
printFileHeight: Int!
printFileDpi: Int!
} }
input ProductBlacklistingInput { input ProductBlacklistingInput {
+5 -2
View File
@@ -1,4 +1,4 @@
import { PaginationInput, PaginationResult } from './types'; import { Maybe, PaginationInput, PaginationResult } from './types';
// Mutation inputs // Mutation inputs
export interface ProductInfoInput { export interface ProductInfoInput {
@@ -10,9 +10,12 @@ export interface ProductInfoInput {
ref1: string; ref1: string;
ref2: string; ref2: string;
ref3: string; ref3: string;
designerId: number; designerId: Maybe<number>;
browsable: boolean; browsable: boolean;
visible: boolean; visible: boolean;
printFileWidth: number;
printFileHeight: number;
printFileDpi: number;
} }
export interface ProductBlacklistMarketInput { export interface ProductBlacklistMarketInput {