// scripts/_patch_vat_schema.js // Try PATCHing the empty VAT201 collection to add the schema + indexes. // This isolates whether the POST issue is with POST specifically, // or with how we're sending the schema payload. const fs = require("node:fs"); const path = require("node:path"); const ENV_PATH = path.join(__dirname, "..", ".env.local"); for (const line of fs.readFileSync(ENV_PATH, "utf-8").split(/\r?\n/)) { const m = line.match(/^([A-Z_][A-Z0-9_]*)=(.*)$/); if (m && !process.env[m[1]]) process.env[m[1]] = m[2].trim(); } const PB_URL = process.env.PB_URL; const PB_TOKEN = process.env.PB_TOKEN; const COLLECTION_ID = "pbc_3919993741"; // created by the previous POST const schema = [ { name: "period", type: "text", required: true, options: { min: 6, max: 6, pattern: "^\\d{6}$" } }, { name: "Standard Rate 1", type: "number", required: false, options: {} }, { name: "Zero Rate 2", type: "number", required: false, options: {} }, { name: "Exempt and non Supplies 3", type: "number", required: false, options: {} }, { name: "Capital goods and services supplied to you 14", type: "number", required: false, options: {} }, { name: "Other goods and services supplied to you 15", type: "number", required: false, options: {} }, { name: "total_payable", type: "number", required: false, options: {} }, { name: "interest_d", type: "number", required: false, options: {} }, { name: "penalties_d", type: "number", required: false, options: {} }, { name: "status", type: "select", required: true, options: { maxSelect: 1, values: ["draft", "submitted", "paid"] } }, { name: "date_submitted", type: "date", required: false, options: { min: "", max: "" } }, { name: "date_paid", type: "date", required: false, options: { min: "", max: "" } }, { name: "due_date", type: "date", required: false, options: { min: "", max: "" } }, { name: "payment_reference", type: "text", required: false, options: { min: 0, max: 100, pattern: "" } }, { name: "company_period_key", type: "text", required: false, options: { min: 0, max: 0, pattern: "" } }, { name: "company", type: "relation", required: true, options: { collectionId: "pbc_3748838150", cascadeDelete: false, minSelect: 1, maxSelect: 1 } }, { name: "Return_Filed", type: "bool", required: false, options: {} }, { name: "last_updated", type: "date", required: false, options: { min: "", max: "" } }, { name: "notes", type: "text", required: false, options: { min: 0, max: 0, pattern: "" } }, { name: "First Name", type: "text", required: false, options: { min: 0, max: 0, pattern: "" } }, { name: "Surname", type: "text", required: false, options: { min: 0, max: 0, pattern: "" } }, { name: "Capacity", type: "text", required: false, options: { min: 0, max: 0, pattern: "" } }, { name: "Bus Tel no", type: "number", required: false, options: {} }, { name: "Cell no", type: "number", required: false, options: {} }, { name: "Contact Email", type: "email", required: false, options: { exceptDomains: [], onlyDomains: [] } }, { name: "is_active", type: "bool", required: false, options: {} }, { name: "documents", type: "file", required: false, options: { maxSelect: 10, maxSize: 10485760, mimeTypes: ["application/pdf", "image/png", "image/jpeg"], thumbs: null, protected: false } }, ]; (async () => { console.log(`PATCH /api/collections/${COLLECTION_ID} (add ${schema.length} fields)`); const res = await fetch(`${PB_URL}/api/collections/${COLLECTION_ID}`, { method: "PATCH", headers: { Authorization: PB_TOKEN, "Content-Type": "application/json" }, body: JSON.stringify({ schema }), }); const text = await res.text(); console.log(`HTTP ${res.status}`); if (!res.ok) { console.error(`Failed: ${text.slice(0, 600)}`); process.exit(1); } const json = JSON.parse(text); console.log(`fields persisted: ${(json.schema || []).filter(f => !f.system).length}`); process.exit(0); })().catch((err) => { console.error("Unexpected error:", err); process.exit(1); });