Spaces:
Runtime error
Runtime error
| import Redis from "ioredis"; | |
| import { initClient } from './utils.js'; | |
| const redis = new Redis({ | |
| host: 'redis-12291.c305.ap-south-1-1.ec2.cloud.redislabs.com', | |
| port: 12291, | |
| password: 'KQCVapXXF2ioM4zF5krQFImzAYkKWY5l', | |
| username: "default" // Replace with your Redis instance's password | |
| }); | |
| export const getCompanyCreds = async ({ company_id }) => { | |
| const creds = await redis.get(`${company_id}:creds`); | |
| if (!creds) { | |
| throw { | |
| message: "company creds not found" | |
| } | |
| } | |
| return { ...JSON.parse(creds), company_id } | |
| } | |
| export const createUpdateCompanyCreds = async ({ company_id, clientId, clientSecret }) => { | |
| const creds = await redis.set(`${company_id}:creds`, JSON.stringify({ clientId, clientSecret })); | |
| return { message: "company creds saved" } | |
| } | |
| export const getApplications = async ({ company_id }) => { | |
| const client = await initClient(company_id); | |
| let applications = await client.configuration.getApplications({ pageSize: 100 }); | |
| applications = applications.items.map(i => { | |
| return { | |
| name: i.name, | |
| id: i.id, | |
| token: i.token, | |
| domain: i.domains?.find(i => i.is_primary)?.name, | |
| logo: i.logo?.secure_url | |
| } | |
| }) | |
| return applications; | |
| } | |
| export const createBrand = async ({ company_id, name, description, logo = "https://cdn.pixelbin.io/v2/falling-surf-7c8bb8/fyprod/wrkr/platform/pictures/favicon/original/ZWTmgEoFQ-platform-favicon.png" }) => { | |
| const client = await initClient(company_id); | |
| let brands = await client.companyProfile.createBrand({ | |
| body: { | |
| name, | |
| description, | |
| logo, | |
| banner: { portrait: logo, landscape: logo } | |
| } | |
| }); | |
| return { message: "brand created", id: brands?.uid }; | |
| } | |
| export const getBrands = async ({ company_id }) => { | |
| const client = await initClient(company_id); | |
| let brands = await client.companyProfile.getBrands({ pageSize: 300 }); | |
| brands = brands.items.map(i => { | |
| return { | |
| name: i?.brand?.name, | |
| logo: i?.brand?.logo, | |
| id: i?.brand?.uid, | |
| } | |
| }) | |
| return brands | |
| } | |
| export const updateBrand = async ({ company_id, brand_id }) => { | |
| const client = await initClient(company_id); | |
| let brands = await client.companyProfile.editBrand({ | |
| brand_id, | |
| body: { | |
| name, | |
| description, | |
| logo, | |
| banner: { portrait: logo, landscape: logo } | |
| } | |
| }); | |
| return { message: "brand updated" } | |
| } | |
| export const getLocations = async ({ company_id }) => { | |
| const client = await initClient(company_id); | |
| let locations = await client.companyProfile.getLocations({ pageSize: 100 }); | |
| locations = locations.items.map(i => { | |
| return { | |
| name: i.name, | |
| id: i.uid, | |
| code: i.code, | |
| documents: i.documents | |
| } | |
| }) | |
| return locations; | |
| } | |
| export const createLocation = async ({ name, company_id, address1, address2, pincode, state, city, country, number, country_code, gst_name, gst_no, latitude = 19.2762702, longitude = 72.8929, code, manager_name, email }) => { | |
| const client = await initClient(company_id); | |
| let locations = await client.companyProfile.createLocation({ | |
| body: { | |
| name, | |
| display_name: name, | |
| code, | |
| company: parseInt(company_id), | |
| documents: [{ | |
| type: "gst", | |
| legal_name: gst_name, | |
| value: gst_no, | |
| verified: true | |
| }], | |
| address: { | |
| "address1": address1, | |
| "address2": address2, | |
| "country": country, | |
| "pincode": pincode, | |
| "city": city, | |
| "state": state, | |
| "latitude": latitude, | |
| "longitude": longitude, | |
| "landmark": '' | |
| }, | |
| manager: { | |
| "name": manager_name, | |
| "email": email, | |
| "mobile_no": { | |
| "number": number, | |
| "country_code": country_code | |
| } | |
| }, | |
| contact_numbers: [ | |
| { | |
| "number": number, | |
| "country_code": country_code | |
| } | |
| ], | |
| store_type: "high_street" | |
| } | |
| }); | |
| return { message: "location added", id: locations?.uid }; | |
| } | |
| export const updateLocation = async ({ company_id, location_id, address1, address2, pincode, state, city, number, country_code, gst_name, gst_no, latitude = 19.2762702, longitude = 72.8929, | |
| }) => { | |
| const client = await initClient(company_id); | |
| let locations = await client.companyProfile.updateLocation({ | |
| locationId: location_id, | |
| body: { | |
| name, | |
| display_name: name, | |
| code, | |
| company: parseInt(companyId), | |
| documents: [{ | |
| type: "gst", | |
| legal_name: gst_name, | |
| value: gst_no, | |
| verified: true | |
| }], | |
| address: { | |
| "address1": address1, | |
| "address2": address2, | |
| "country": country, | |
| "pincode": pincode, | |
| "city": city, | |
| "state": state, | |
| "latitude": latitude, | |
| "longitude": longitude, | |
| "landmark": landmark | |
| }, | |
| manager: { | |
| "name": manager_name, | |
| "email": email, | |
| "mobile_no": { | |
| "number": number, | |
| "country_code": country_code | |
| } | |
| }, | |
| contact_numbers: [ | |
| { | |
| "number": number, | |
| "country_code": country_code | |
| } | |
| ], | |
| store_type: "high_street" | |
| } | |
| }); | |
| return { message: "location updated" }; | |
| } | |
| export const createApplication = async ({ company_id, brand_ids, name, subdomain }) => { | |
| const client = await initClient(company_id); | |
| let app = await client.configuration.createApplication({ | |
| body: { | |
| "app": { | |
| "company_id": (1).toString(), | |
| "channel_type": "website-and-mobile-apps", | |
| "auth": { | |
| "enabled": true | |
| }, | |
| "name": name, | |
| "desc": "", | |
| "mode": "live" | |
| }, | |
| "configuration": { | |
| "inventory": { | |
| "brand": { | |
| "criteria": "all", | |
| "brands": [] | |
| }, | |
| "store": { | |
| "criteria": "filter", | |
| "rules": [ | |
| { | |
| "companies": [company_id], | |
| "brands": brand_ids | |
| } | |
| ], | |
| "stores": [] | |
| }, | |
| "image": ["standard", "substandard", "default"], | |
| "franchise_enabled": false, | |
| "out_of_stock": true | |
| }, | |
| "payment": { | |
| "mode_of_payment": "ECOMM", | |
| "source": "ECOMM" | |
| }, | |
| "article_assignment": { | |
| "post_order_reassignment": true, | |
| "enforced_stores": [], | |
| "rules": { | |
| "store_priority": { | |
| "enabled": false, | |
| "storetype_order": [] | |
| } | |
| } | |
| } | |
| }, | |
| "domain": { | |
| "name": `${subdomain}.hostx5.de` | |
| } | |
| } | |
| }) | |
| return { ...app }; | |
| } | |
| export const createProduct = async ({ name, company_id, slug, | |
| seller_identifier, | |
| brand_id, mrp = 999, selling_price = 499 }) => { | |
| const client = await initClient(company_id); | |
| const obj = { | |
| "name": name, | |
| "slug": slug, | |
| "brand_uid": brand_id, | |
| "item_code": seller_identifier, | |
| "teaser_tag": {}, | |
| "net_quantity": {}, | |
| "tax_identifier": { | |
| "reporting_hsn": "1202355241H1", | |
| "hsn_code": "1202355241", | |
| "hsn_code_id": "65769883ba99dcf407a2b1ed" | |
| }, | |
| "country_of_origin": "India", | |
| "variants": {}, | |
| "variant_media": {}, | |
| "description": "PHA+WW91ciBwcm9kdWN0IGRlc2NyaXB0aW9uPC9wPg==", | |
| "short_description": "Your product description", | |
| "highlights": [], | |
| "company_id": 10, | |
| "template_tag": "c2-0-template", | |
| "currency": "INR", | |
| "media": [], | |
| "is_set": false, | |
| "sizes": [ | |
| { | |
| "size": "OS", | |
| "price": mrp, | |
| "price_effective": selling_price, | |
| "price_transfer": 0, | |
| "currency": "INR", | |
| "item_length": 1, | |
| "item_width": 1, | |
| "item_height": 1, | |
| "item_weight": 1, | |
| "item_dimensions_unit_of_measure": "cm", | |
| "item_weight_unit_of_measure": "gram", | |
| "track_inventory": true, | |
| "identifiers": [ | |
| { | |
| "gtin_value": seller_identifier, | |
| "gtin_type": "ean", | |
| "primary": true | |
| } | |
| ], | |
| "_custom_json": {}, | |
| "name": "OS" | |
| } | |
| ], | |
| "_custom_json": {}, | |
| "size_guide": "", | |
| "product_group_tag": [], | |
| "product_publish": { | |
| "product_online_date": "2023-12-11T08:38:10.082Z", | |
| "is_set": false | |
| }, | |
| "is_active": true, | |
| "custom_order": { | |
| "is_custom_order": false, | |
| "manufacturing_time": 0, | |
| "manufacturing_time_unit": "hours" | |
| }, | |
| "multi_size": false, | |
| "no_of_boxes": 1, | |
| "is_dependent": false, | |
| "item_type": "digital", | |
| "tags": [], | |
| "departments": [ | |
| 19771 | |
| ], | |
| return_config: { | |
| "returnable": false | |
| }, | |
| "category_slug": "c2-0-cat", | |
| "trader": [ | |
| { | |
| "type": "Manufacturer", | |
| "name": "Manufacturer", | |
| "address": [ | |
| "Manufacturer Address" | |
| ] | |
| } | |
| ], | |
| "return_config": { | |
| "returnable": true, | |
| time: 3, | |
| unit: "days" | |
| } | |
| } | |
| let product = await client.catalog.createProduct({ | |
| body: obj | |
| }); | |
| product = await client.catalog.getProduct({ | |
| itemId: product.uid | |
| }); | |
| return { | |
| message: "product created", | |
| id: product.data.uid, | |
| seller_identifier: product?.data?.sizes?.[0]?.seller_identifier | |
| }; | |
| } | |
| export const createInventory = async ({ company_id, product_id, seller_identifier, location_id, mrp = 999, selling_price = 499 }) => { | |
| const client = await initClient(company_id); | |
| let product = await client.catalog.getProduct({ | |
| itemId: product_id | |
| }); | |
| let inv = await client.catalog.updateRealtimeInventory({ | |
| itemId: product.data.uid, | |
| sellerIdentifier: seller_identifier, | |
| body: { | |
| company_id: company_id, | |
| payload: [{ | |
| "seller_identifier": seller_identifier, | |
| "store_id": location_id, | |
| "price_marked": mrp, | |
| "price_effective": selling_price, | |
| "total_quantity": 10, | |
| "tags": [] | |
| }] | |
| } | |
| }) | |
| return { message: "inv created" }; | |
| } | |