Improve naming of product sync hooks

This commit is contained in:
Dominic Ferrando
2026-07-11 15:47:31 -04:00
parent da3c9e588e
commit d40b9209d5
2 changed files with 10 additions and 10 deletions
+4 -4
View File
@@ -47,19 +47,19 @@ class ProductSyncService {
log.info({ session: payload.session }, "starting sync run"); log.info({ session: payload.session }, "starting sync run");
await this.ProductSyncer.run({ await this.ProductSyncer.run({
filter: payload.filter, filter: payload.filter,
onStart: async (startDate) => { beforeStart: async (startDate) => {
await this.Queue.enqueue(payload, startDate); await this.Queue.enqueue(payload, startDate);
}, },
onStep: async (pProductIds: number[]) => { beforeStep: async (pProductIds: number[]) => {
if (!id) throw new Error("Expected sync run ID"); if (!id) throw new Error("Expected sync run ID");
await db.updateTable("product_syncs") await db.updateTable("product_syncs")
.set({ syncing_p_product_ids: pProductIds }) .set({ syncing_p_product_ids: pProductIds })
.where("id", "=", id) .where("id", "=", id)
.execute(); .execute();
}, },
onCompletion: async (completionDate, duration) => { afterCompletion: async (endDate, duration) => {
if (!id) throw new Error("Expected sync run ID"); if (!id) throw new Error("Expected sync run ID");
await this.Queue.fulfill(id, completionDate) await this.Queue.fulfill(id, endDate)
freedSlot = true; freedSlot = true;
} }
}); });
+6 -6
View File
@@ -21,9 +21,9 @@ export type ProductSyncerOptions = {
filter?: { filter?: {
pProductIds: number[] | null; pProductIds: number[] | null;
}, },
onStart?: (startDate: Date) => Promise<void> beforeStart?: (startDate: Date) => Promise<void>
onCompletion?: (completionDate: Date, duration: number) => Promise<void> afterCompletion?: (completionDate: Date, duration: number) => Promise<void>
onStep?: (pProductIds: number[]) => Promise<void> beforeStep?: (pProductIds: number[]) => Promise<void>
}; };
export class ProductSyncer { export class ProductSyncer {
@@ -39,7 +39,7 @@ export class ProductSyncer {
async run(opt: ProductSyncerOptions = {}) { async run(opt: ProductSyncerOptions = {}) {
const startDate = new Date(); const startDate = new Date();
await opt.onStart?.(startDate); await opt.beforeStart?.(startDate);
if (opt.filter?.pProductIds) if (opt.filter?.pProductIds)
this.log.info({ pProductIds: opt.filter.pProductIds }, "sync started (filtered)"); this.log.info({ pProductIds: opt.filter.pProductIds }, "sync started (filtered)");
@@ -58,7 +58,7 @@ export class ProductSyncer {
for (const pMetaProduct of pMetaProducts) { for (const pMetaProduct of pMetaProducts) {
const pProductIds = pMetaProduct.entries.map((e) => e.product.sync_product.id); const pProductIds = pMetaProduct.entries.map((e) => e.product.sync_product.id);
this.log.info({ name: pMetaProduct.name, externalId: pMetaProduct.wProductId, pProductIds }, "syncing printful meta product"); this.log.info({ name: pMetaProduct.name, externalId: pMetaProduct.wProductId, pProductIds }, "syncing printful meta product");
await opt.onStep?.(pProductIds); await opt.beforeStep?.(pProductIds);
const newWSkus: DeepPartial<Webflow.Products.Skus.Sku>[] = this.generateWSkus(pMetaProduct); const newWSkus: DeepPartial<Webflow.Products.Skus.Sku>[] = this.generateWSkus(pMetaProduct);
const foundColors = new Set<string>( const foundColors = new Set<string>(
@@ -198,7 +198,7 @@ export class ProductSyncer {
const endDate = new Date(); const endDate = new Date();
const duration = endDate.getTime() - startDate.getTime(); const duration = endDate.getTime() - startDate.getTime();
await opt.onCompletion?.(endDate, duration); await opt.afterCompletion?.(endDate, duration);
this.log.info({ durationMs: duration }, "sync complete"); this.log.info({ durationMs: duration }, "sync complete");
} }