Files
product_inventory/src/triggers.ts
Ben Miller 85cdfe1443 feat: implement status automation and router pattern
- Implemented modular status automation system (statusHandlers.ts).
- Added handlers for 'Published' (Active/Qty 1), 'Sold' (Active/Qty 0), and 'Drafted'.
- Refactored onEdit triggers into a central Router pattern in OnEditHandler.ts.
- Updated Product.ts to support explicit quantity setting (fixed 0 value bug).
- Updated shopifyApi.ts to implement SetInventoryItemQuantity (using ignoreCompareQuantity).
- Consolidated triggers into single onEditHandler.
- Updated project documentation.
2025-12-24 23:55:28 -07:00

45 lines
1.3 KiB
TypeScript

export function reinstallTriggers() {
let currentTriggers = ScriptApp.getProjectTriggers()
for (let i = 0; i < currentTriggers.length; i++) {
ScriptApp.deleteTrigger(currentTriggers[i])
}
let ss = SpreadsheetApp.getActive()
ScriptApp.newTrigger("onEditHandler").forSpreadsheet(ss).onEdit().create()
ScriptApp.newTrigger("processBatchedEdits")
.timeBased()
.everyMinutes(1)
.create()
installSalesSyncTrigger()
}
import { Config } from "./config"
export function installSalesSyncTrigger() {
const config = new Config()
// Valid minute intervals for Apps Script
const valid = [1, 5, 10, 15, 30]
let freq = config.salesSyncFrequency || 10
if (valid.indexOf(freq) === -1) {
console.warn(`Invalid frequency ${freq}. Must be 1, 5, 10, 15, 30. Defaulting to 10.`)
freq = 10
}
// Delete existing 'checkRecentSales' triggers to avoid duplicates
const triggers = ScriptApp.getProjectTriggers()
for (const t of triggers) {
if (t.getHandlerFunction() === "checkRecentSales") {
ScriptApp.deleteTrigger(t)
}
}
ScriptApp.newTrigger("checkRecentSales")
.timeBased()
.everyMinutes(freq)
.create()
console.log(`Installed 'checkRecentSales' trigger running every ${freq} minutes.`)
}