Add publishing date (#107)

This commit is contained in:
Niklas Fondberg
2022-03-10 16:22:03 +01:00
committed by GitHub
parent c4e04dc616
commit cf6b1fd56e
8 changed files with 4166 additions and 4051 deletions
+1
View File
@@ -8,6 +8,7 @@ COPY . app/
WORKDIR /app
# Set node env
ENV NODE_ENV=production
ENV NEW_RELIC_NO_CONFIG_FILE=true
# Installs npm dependencies on container
RUN npm ci
# Command container will actually run when called
+3816 -3786
View File
File diff suppressed because it is too large Load Diff
+37
View File
@@ -155,6 +155,7 @@ export class ProductAPI extends BaseSQLDataSource {
}
createProductFromRow(row: any) {
row.publishingDate = row.publishing_date;
row.blacklisting = this.getBlacklisting(row);
row.printProducts = this.getPrintProducts(row);
row.type = this.getProductTypes(row);
@@ -430,6 +431,15 @@ export class ProductAPI extends BaseSQLDataSource {
promises.push(promise);
}
const pd = info.publishingDate;
const publishingDate = new Date(
pd.getFullYear(),
pd.getMonth(),
pd.getDate(),
0,
0,
0,
);
promises.push(
this.knex
.table('product-products')
@@ -438,6 +448,7 @@ export class ProductAPI extends BaseSQLDataSource {
browsable: info.browsable ? 1 : 0,
visible: info.visible ? 1 : 0,
designerid: info.designerId ?? null,
publishingDate: publishingDate,
ref1: info.ref1,
ref2: info.ref2,
ref3: info.ref3,
@@ -467,6 +478,32 @@ export class ProductAPI extends BaseSQLDataSource {
return Promise.all(promises);
}
/**
* @function productPublishing
* @description updates a products publishing
*/
async productPublishing(productId: number, date: Date) {
return this.knex
.table('product-products')
.update({
publishing_date: date,
})
.where('productid', productId);
}
/**
* @function massUpdatePublishingDate
* @description Mass update publishing date
*/
async massUpdatePublishingDate(productIds: Array<number>, date: Date) {
return this.knex
.table('product-products')
.update({
publishing_date: date,
})
.whereIn('productid', productIds);
}
/**
* @function massUpdatePublishing
* @description Mass update visible and browsable
+2 -1
View File
@@ -12,6 +12,7 @@ SELECT products.productid AS id,
products.designerid,
products.inserted,
products.updated,
products.publishing_date,
products.ref1,
products.ref2,
products.ref3,
@@ -89,7 +90,7 @@ export function products(input: ProductsFilterInput) {
AND products.browsable = ${filter?.browsable ? '1' : '0'}`
: ``
}
ORDER BY products.inserted DESC
ORDER BY products.publishing_date DESC
LIMIT ${limit} OFFSET ${offset}
`
);
+11 -1
View File
@@ -1,4 +1,4 @@
require('newrelic');
const newrelic = require('newrelic');
import dotenv from 'dotenv';
dotenv.config();
@@ -90,6 +90,7 @@ const context = async ({ req }) => {
};
async function main() {
try {
const server = new ApolloServer({
typeDefs,
resolvers,
@@ -97,6 +98,11 @@ async function main() {
context,
introspection: true,
plugins: [newRelicPlugin],
formatError: (err) => {
console.log('Error (fmt):', err);
newrelic.noticeError(err);
return err;
},
});
await server.listen();
@@ -105,5 +111,9 @@ async function main() {
'Server is running on http://localhost:4000, ',
process.env.ENVIRONMENT_NAME,
);
} catch (ex) {
newrelic.noticeError(ex);
console.error('Got terminal exception:', ex);
}
}
main();
+18
View File
@@ -476,4 +476,22 @@ export const productMutationTypeDefs = {
value: 'OK',
};
},
/**
* @function massUpdatePublishing
* @description Mutate the Publishing for products
*/
async massUpdatePublishingDate(
_,
{ productIds, date },
{ dataSources, auth },
) {
checkAccess(['products.write'], auth);
await (<ProductAPI>dataSources.productApi).massUpdatePublishingDate(
productIds,
date,
);
return {
value: 'OK',
};
},
};
+27 -10
View File
@@ -236,6 +236,7 @@ type Product {
browsable: Boolean!
inserted: DateTime!
updated: DateTime
publishingDate: DateTime!
printProducts: [PrintProduct]
blacklisting: [ProductBlacklist]
categories: [Category]
@@ -405,6 +406,7 @@ input ProductInfoInput {
designerId: Int
browsable: Boolean!
visible: Boolean!
publishingDate: DateTime!
printFileWidth: Int!
printFileHeight: Int!
printFileDpi: Int!
@@ -435,8 +437,9 @@ type IdNumberResult {
}
type Mutation {
""" Product """
"""
Product
"""
addProduct(name: String!, batch: String): Product
productInfo(productId: Int!, info: ProductInfoInput!): Product
productWallpaperType(
@@ -447,8 +450,9 @@ type Mutation {
productId: Int!
markets: [ProductBlacklistingInput]
): Product
""" Product Image """
"""
Product Image
"""
productFocusPoint(
productId: Int!
focusXpoint2: Float!
@@ -465,22 +469,32 @@ type Mutation {
height: Int!
): String
""" Product Relations """
"""
Product Relations
"""
addRelatedProducts(productId: Int!, articleNumbers: [String]!): Product
removeRelatedProducts(productId: Int!, relatedProductIds: [Int]!): Product
""" Product Categories """
"""
Product Categories
"""
addCategoriesToProduct(productId: Int!, categoryIds: [Int]!): Product
removeCategoriesFromProduct(productId: Int!, categoryIds: [Int]!): Product
""" Product Keywords """
"""
Product Keywords
"""
productKeywords(productId: Int!, keywordIds: [Int]): Product
addKeyword(name: String!, type: KeywordType): Keyword
""" Product Other """
"""
Product Other
"""
updateProductComments(productId: Int!, comments: String!): Product
""" Printproducts """
"""
Printproducts
"""
productGroup(productId: Int!, groupIds: [Int]): Product
productGroupInteriors(productId: Int!, groupId: Int!, uris: [String]): Product
addOwnInteriorToPrintProduct(
@@ -496,7 +510,9 @@ type Mutation {
border: BorderType!
): PrintProductDefaults
""" Mass Update """
"""
Mass Update
"""
massUpdatePublishing(
productIds: [Int]!
visible: Boolean
@@ -506,4 +522,5 @@ type Mutation {
productIds: [Int]!
markets: [ProductBlacklistingInput]
): StringResult
massUpdatePublishingDate(productIds: [Int]!, date: DateTime!): StringResult
}
+1
View File
@@ -16,6 +16,7 @@ export interface ProductInfoInput {
designerId: Maybe<number>;
browsable: boolean;
visible: boolean;
publishingDate: Date;
printFileWidth: number;
printFileHeight: number;
printFileDpi: number;