More work on deployment

This commit is contained in:
Dominic Ferrando
2025-05-04 17:02:19 -04:00
parent 228b4a7b94
commit f93f9a7529
9 changed files with 31 additions and 5 deletions
+6
View File
@@ -0,0 +1,6 @@
PRINTFUL_AUTH=RGI4WiWeQkrEYek3obwxZL6c424LAJsUimDX1bHF
PRINTFUL_STORE_ID=15619272
WEBFLOW_AUTH=115ded1e97162f5d4835bcb87e236fe4bce1ad602f519bca8179394092a8c6f6
WEBFLOW_SITE_ID=6737d2c9511d414861f1726e
WEBFLOW_COLLECTION_ID=675a3fbe966e58ea9aa7110f
+3
View File
@@ -31,5 +31,8 @@ FROM base
# Copy built application
COPY --from=build /app /app
RUN apt-get update && apt-get install -y sqlite3 && rm -rf /var/lib/apt/lists/*
# Start the server by default, this can be overwritten at runtime
CMD [ "bun", "run", "db:seed:prod" ]
CMD [ "bun", "run", "start" ]
View File
@@ -9,7 +9,11 @@ export class ProductRecords {
private db: Database;
constructor() {
this.db = new Database("./database/data.db");
const dbPath = Bun.env.NODE_ENV === "production" ?
"/data/data.db" :
"./data/data.db";
this.db = new Database(dbPath);
}
findFromWebflow(webflowProductId: number): ProductRecord | undefined {
View File
+4
View File
@@ -23,3 +23,7 @@ primary_region = 'ord'
memory = '1gb'
cpu_kind = 'shared'
cpus = 1
[[mounts]]
source = "data"
destination = "/data"
+2 -1
View File
@@ -1,5 +1,5 @@
import { Printful } from "./printful.ts"
import { ProductRecords } from "./database/product-records.ts"
import { ProductRecords } from "./data/product-records.ts"
import { Webflow } from "./webflow.ts";
const productRecords = new ProductRecords();
@@ -14,6 +14,7 @@ const server = Bun.serve({
"/webhook/printful": {
async POST(req) {
const payload: Printful.Webhook.EventPayload = await req.json()
console.log(JSON.stringify(payload));
switch (payload.type) {
case Printful.Webhook.Event.ProductUpdated:
const printfulProduct = await Printful.getSyncProduct(payload.data.sync_product.id)
+2 -1
View File
@@ -4,7 +4,8 @@
"@types/bun": "^1.2.11"
},
"scripts": {
"db:seed": "sqlite3 ./database/data.db < ./database/seed.sql",
"db:seed:dev": "sqlite3 ./data/data.db < ./data/seed.sql",
"db:seed:prod": "sqlite3 /data/data.db < ./data/seed.sql",
"start": "bun run main.ts"
}
}
+8 -1
View File
@@ -1,4 +1,4 @@
import { ProductRecords } from "./database/product-records";
import { ProductRecords } from "./data/product-records";
import { Printful } from "./printful"
export namespace Webflow {
@@ -71,6 +71,7 @@ export namespace Webflow {
const foundSizes = Array.from(new Set(printfulVariants.map(v => v.size)));
// CREATE WEBFLOW PRODUCT
console.log("CREATE WEBFLOW PRODUCT");
let addProductResponse = await fetch(`${API_URL}/products`, {
method: "POST",
headers: {
@@ -108,11 +109,13 @@ export namespace Webflow {
})
});
addProductResponse = await addProductResponse.json();
console.log(JSON.stringify(addProductResponse));
const webflowProductId = addProductResponse["product"]["id"];
const printfulProductId = printfulProduct.result.sync_product.id;
// CREATE WEBFLOW PRODUCT SKUs
console.log("CREATE SKUS");
let createSkuResponse = await fetch(`${API_URL}/products/${webflowProductId}/skus`, {
method: "POST",
headers: {
@@ -124,10 +127,12 @@ export namespace Webflow {
})
});
createSkuResponse = await createSkuResponse.json();
console.log(JSON.stringify(createSkuResponse));
const responseSkus = [addProductResponse["sku"], ...createSkuResponse["skus"]];
// SYNC WEBFLOW/PRINTFUL PRODUCT AND VARIANT IDs
console.log("SYNC PRODUCT IDs");
let modifyPrintfulProductResponse = await fetch(`${Printful.API_URL}/store/products/${printfulProductId}`, {
method: "PUT",
headers: {
@@ -146,8 +151,10 @@ export namespace Webflow {
})
});
modifyPrintfulProductResponse = await modifyPrintfulProductResponse.json();
console.log(JSON.stringify(modifyPrintfulProductResponse));
// CACHE WEBFLOW/PRINTFUL PRODUCT ASSOCIATION
console.log("CACHING PRODUCT ASSOCIATION");
productRecords.add({ printfulProductId, webflowProductId });
}
}