- Next.js 14 + Tailwind + TypeScript scaffolded - PocketBase v0.39.8 collections: JEI_invoices, JEI_invoice_lines, JEI_stock_codes (30 fields total, locked to superuser) - PDF extraction: scripts/extract_invoices.py parses 33 PDFs -> 38 records - Import script: scripts/import_to_pb.py idempotent push to PB - Imported: 24 invoices, 70+ stock codes, 118 invoice lines - Pages: /, /invoices, /invoices/[id], /stock-codes, /stock-codes/[code] - All 5 pages verified returning 200 with real data on port 6002
26 lines
908 B
JavaScript
26 lines
908 B
JavaScript
const { default: PocketBase } = require('pocketbase');
|
|
const fs = require('fs');
|
|
const envFile = fs.readFileSync('.env.local', 'utf8');
|
|
const token = envFile.match(/PB_TOKEN=(.+)/)[1].trim();
|
|
const url = envFile.match(/PB_URL=(.+)/)[1].trim();
|
|
const pb = new PocketBase(url);
|
|
pb.authStore.save(token);
|
|
|
|
(async () => {
|
|
try {
|
|
const col = await pb.collections.create({
|
|
name: 'JEI_test_sdk',
|
|
type: 'base',
|
|
fields: [
|
|
{ name: 'foo', type: 'select', required: false, options: { maxSelect: 1, values: ['a','b'] } }
|
|
],
|
|
listRule: '', viewRule: '', createRule: '', updateRule: '', deleteRule: ''
|
|
});
|
|
console.log('Created id=' + col.id + ' fields=' + col.fields.length);
|
|
await pb.collections.delete(col.id);
|
|
console.log('deleted');
|
|
} catch (e) {
|
|
console.log('ERR: ' + e.message);
|
|
if (e.data) console.log('data: ' + JSON.stringify(e.data));
|
|
}
|
|
})();
|