diff --git a/netlify/functions/airtable.mts b/netlify/functions/airtable.mts index ec0ce45..ace251e 100644 --- a/netlify/functions/airtable.mts +++ b/netlify/functions/airtable.mts @@ -11,29 +11,37 @@ const handler = async (request: Request, context: Context) => { } = await request.json(); const { base, table } = meta; - console.log({ data, url: `https://api.airtable.com/v0/${base}/${table}` }); - - // // Make the request using fetch - fetch(`https://api.airtable.com/v0/${base}/${table}`, { - method: "POST", - headers: { - Authorization: `Bearer ${process.env.AIRTABLE_RECORD}`, - "Content-Type": "application/json", - }, - body: JSON.stringify({ - fields: { - id, - ...data, + try { + // // Make the request using fetch + const response = await fetch( + `https://api.airtable.com/v0/${base}/${table}`, + { + method: "PATCH", + headers: { + Authorization: `Bearer ${process.env.AIRTABLE_RECORD}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + performUpsert: { + fieldsToMergeOn: ["id"], + }, + records: [ + { + fields: { + id, + ...data, + }, + }, + ], + }), }, - }), - }) - .then((response) => response.json()) // Convert the response to JSON - .then((data) => { - // Handle the data from the response - console.log(data); - }); - // .. - return new Response("ok"); + ); + const output = await response.json(); + console.log(output); + return new Response("ok"); + } catch (e) { + return new Response(JSON.stringify(e), { status: 400 }); + } }; export default handler; diff --git a/src/pages/census/2023.js b/src/pages/census/2023.js index b4fd7f2..363a759 100644 --- a/src/pages/census/2023.js +++ b/src/pages/census/2023.js @@ -1,60 +1,80 @@ import React from "react"; -import { useForm, Controller } from "react-hook-form"; import styled from "styled-components"; -import { Layout, Button } from "@components"; +import { Layout } from "@components"; +import { TextareaInner } from "@components/Form/Input"; -import { Employment } from "@components/Census/2023/Employment"; -import { OrgSize } from "@components/Census/2023/OrgSize"; -import { OtherDiscords } from "@components/Census/2023/OtherDiscords"; -import { ProExperience } from "@components/Census/2023/ProExperience"; -import { ReactExperience } from "@components/Census/2023/ReactExperience"; -import { VisitFrequency } from "@components/Census/2023/VisitFrequency"; +import { Professional } from "../../components/Census/2023/Professional"; +import { Demographics } from "../../components/Census/2023/Demographics"; -const Demographics = ({ onSubmit: afterSubmit }) => { - const form = useForm(); - const { handleSubmit } = form; +const TextareaEl = styled(TextareaInner)` + font-size: 0.8em; +`; - return ( -
{ - // Submit to google sheet, TODO - afterSubmit(); - })} - > - {/* */} +const AIRTABLE_BASE = "apppkyY9esBtJgdM7"; +const AIRTABLE_TABLE = "2023"; - {/* What is your current educational/employment status? */} - - ); -}; - -const Professional = ({ submissionId, onSubmit: afterSubmit }) => { - const form = useForm(); - const { handleSubmit } = form; - - return ( -
{ - console.log({ data }); - afterSubmit(); - })} - > - - - - - - -