working on code breakup
Build and Push Image / build-and-push (push) Failing after 21s

This commit is contained in:
2026-05-02 23:29:32 -07:00
parent 749fe95903
commit b39fc6e7db
6 changed files with 103 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
import csvParser from './csvParser.js';
import apiClient from './apiClient.js';
import config from './config.js';
export async function processCollections(filePath) {
try {
const items = await csvParser.parseCsv(filePath);
for (const item of items) {
console.log(`Processing item: ${item.name} (Product ID: ${item.productId})`);
// Perform API call to create collection (using apiClient)
// ... Create your collection API call here ...
// Use item.productId in your API call.
// Download image (using imageDownloader)
// ...
}
console.log("All collections processed successfully!");
} catch (error) {
console.error("Error processing collections:", error);
}
}
+18
View File
@@ -0,0 +1,18 @@
const path = require('path');
const config = {
baseUrl: 'https://koillection.nelson-household.com/api',
apiEndpoint: '/api/collections' , // Replace with your API endpoint
imageDownloadDirectory: path.join(__dirname, 'master-set-images/perfect-order'), // Local directory for downloaded images
maxConcurrentDownloads: 5, // Limit concurrent downloads
dataValidationRules: {
collectionName: /^[a-zA-Z0-9_]+$/, // Regular expression for collection name
itemName: /^[a-zA-Z0-9_ ]+$/ // Regular expression for item name
},
collectionsMapping: {
'Perfect Order': './csv/ME03PerfectOrderProductsAndPrices.csv',
}
// Add more configuration settings here (e.g., image server URL, etc.)
};
export default config;
+23
View File
@@ -0,0 +1,23 @@
import config from './config.js';
export async function parseCsv(filePath) {
const fs = require('fs').promises; // Use promises version
const csv = require('csv-parser');
const results = [];
const stream = fs.createReadStream(filePath).pipe(csv());
for await (const row of stream) {
// Map CSV columns to item properties. Adjust this mapping based on your CSV
const item = {
productId: row.productId, // Use productId from CSV
name: row.name,
collectionId: row.collectionId,
imageUrl: row.imageUrl
// Add other properties as needed
};
results.push(item);
}
return results;
}
+16
View File
@@ -0,0 +1,16 @@
import config from './config.js';
export function validateData(data) {
let isValid = true;
for (const key in data) {
if (config.dataValidationRules[key]) {
const regex = config.dataValidationRules[key];
if (!regex.test(data[key])) {
console.warn(`Invalid value for ${key}: ${data[key]}`);
isValid = false;
}
}
}
return isValid;
}
View File
+24
View File
@@ -0,0 +1,24 @@
import config from './config.js';
const username = process.env.KOILLECTION_USERNAME;
const password = process.env.KOILLECTION_PASSWORD;
export async function createJWTToken() {
try {
const response = await fetch(`${config.baseUrl}/authentication_token`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ username, password }),
});
if (!response.ok) {
throw new Error(`Failed to obtain JWT token: ${response.status} - ${response.statusText}`);
}
const data = await response.json();
console.log(`JWT Token obtained: ${data.token}`);
return data.token;
} catch (error) {
console.error(`Error obtaining JWT token:`, error);
throw error; // Re-throw to be caught in other functions
}
}