|
1 | 1 | export const dynamic = 'force-dynamic'
|
2 | 2 | export const fetchCache = 'force-no-store'
|
3 | 3 |
|
4 |
| -import createBackgroundJob from '../create-background-job' |
| 4 | +import 'server-only' |
| 5 | +import Airtable from 'airtable' |
| 6 | + |
| 7 | +async function triggerShirtJob() { |
| 8 | + Airtable.configure({ |
| 9 | + apiKey: process.env.AIRTABLE_API_KEY, |
| 10 | + endpointUrl: process.env.AIRTABLE_ENDPOINT_URL, |
| 11 | + }) |
| 12 | + |
| 13 | + const base = Airtable.base(process.env.BASE_ID) |
| 14 | + console.log('Getting people to regenerate') |
| 15 | + const peopleToRegenerate = await base('people') |
| 16 | + .select({ |
| 17 | + filterByFormula: ` |
| 18 | + AND( |
| 19 | + NOT({action_generate_shirt_design} = TRUE()), |
| 20 | + NOT({ysws_submission} = BLANK()) |
| 21 | + )`, |
| 22 | + fields: [], |
| 23 | + }) |
| 24 | + .all() |
| 25 | + |
| 26 | + const peopleIds = peopleToRegenerate.map((person) => person.id) |
| 27 | + console.log('People to regenerate:', peopleIds.length) |
| 28 | + const chunkSize = 10 |
| 29 | + for (let i = 0; i < peopleIds.length; i += chunkSize) { |
| 30 | + console.log(`Processing chunk ${i} to ${i + chunkSize}`) |
| 31 | + const chunk = peopleIds.slice(i, i + chunkSize) |
| 32 | + await base('people').update( |
| 33 | + chunk.map((id) => ({ |
| 34 | + id, |
| 35 | + fields: { |
| 36 | + action_generate_shirt_design: true, |
| 37 | + }, |
| 38 | + })), |
| 39 | + ) |
| 40 | + } |
| 41 | +} |
5 | 42 |
|
6 | 43 | async function processDailyJobs() {
|
7 | 44 | console.log('Processing daily jobs')
|
| 45 | + await triggerShirtJob() |
8 | 46 | }
|
9 | 47 |
|
10 | 48 | export async function GET() {
|
|
0 commit comments