site/pages/api/arcade/hack-hour/inventory.js
2026-01-27 11:41:17 -05:00

70 lines
2.2 KiB
JavaScript

import AirtablePlus from "airtable-plus"
const flavorText = async () => {
const airtable = new AirtablePlus({
apiKey: process.env.AIRTABLE_API_KEY,
baseID: "app3ODCEuTL5iGjb3",
tableName: "Flavor Text"
})
const records = airtable.read()
return records
}
const inventoryParts = async () => {
const airtable = new AirtablePlus({
apiKey: process.env.AIRTABLE_API_KEY,
baseID: "app3ODCEuTL5iGjb3",
tableName: "Inventory"
})
const records = await airtable.read()
return records
}
export default async function handler(req, res) {
const data = {}
await Promise.all([
inventoryParts().then(d => data.inventory = d),
flavorText().then(d => data.flavor = d),
])
const inventoryResults = data.inventory.filter(record => record.fields["Enabled"]).map(record => {
return {
name: record.fields['Name'],
smallName: record.fields['Name Small Text'],
hours: record.fields['Hours'],
imageURL: record.fields['Image URL'],
formURL: record.fields['Order Form URL'],
description: record.fields['Description'],
flavorText: record?.fields['Flavor text']?.map(recordID => {
const flavorRecord = data.flavor.find(f => f.id === recordID)
const result = {
message: flavorRecord.fields["Message"],
character: flavorRecord.fields["Character"],
imageURL: flavorRecord.fields["Image URL"]
}
if (flavorRecord.fields["Shopkeepers"]) {
result.characterURL = flavorRecord.fields["Image Link (from Shopkeepers)"][0]
result.character = flavorRecord.fields["Character (from Shopkeepers)"][0]
}
return result
})
}
})
const selfClicks = {}
data.flavor.filter(f => f.fields['Self Click']).forEach(record => {
const char = record.fields["Character (from Shopkeepers)"][0]
const charURL = record.fields["Image Link (from Shopkeepers)"][0]
const charMsg = record.fields["Message"]
selfClicks[char] = selfClicks[char] || []
selfClicks[char].push({
message: charMsg,
characterURL: charURL,
character: char
})
})
res.status(200).json({inventory: inventoryResults, selfClicks})
}