Replaced mock data with live database data; minoe aesthetic changes
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import PocketBase from 'pocketbase'
|
||||
import { POCKETBASE_URL, PB_ADMIN_EMAIL, PB_ADMIN_PASSWORD } from './pocketbase-config.js'
|
||||
|
||||
const COLLECTION = 'travellers'
|
||||
|
||||
let pb = null
|
||||
let authPromise = null
|
||||
|
||||
function getClient() {
|
||||
if (!pb) {
|
||||
pb = new PocketBase(POCKETBASE_URL)
|
||||
// Main process may receive overlapping IPC calls (e.g. React Strict Mode).
|
||||
// Default auto-cancel would abort duplicate in-flight PocketBase requests.
|
||||
pb.autoCancellation(false)
|
||||
}
|
||||
return pb
|
||||
}
|
||||
|
||||
function parseEntry(r) {
|
||||
return {
|
||||
id: r.emr_id,
|
||||
name: r.name ?? '',
|
||||
location: r.location ?? '',
|
||||
countryISO: r.country_iso ?? '',
|
||||
countriesISO: r.countries_iso ?? [],
|
||||
status: r.status ?? '',
|
||||
departure: r.departure ?? '',
|
||||
arrival: r.arrival ?? '',
|
||||
created: r.created,
|
||||
updated: r.updated,
|
||||
}
|
||||
}
|
||||
|
||||
export async function ensureAuth() {
|
||||
const client = getClient()
|
||||
if (client.authStore.isValid) return
|
||||
|
||||
if (authPromise) {
|
||||
await authPromise
|
||||
return
|
||||
}
|
||||
|
||||
// PocketBase v0.23+ removed /api/admins/*; superusers authenticate as a collection.
|
||||
authPromise = client
|
||||
.collection('_superusers')
|
||||
.authWithPassword(PB_ADMIN_EMAIL, PB_ADMIN_PASSWORD)
|
||||
try {
|
||||
await authPromise
|
||||
} catch (err) {
|
||||
authPromise = null
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
||||
export async function fetchEntries() {
|
||||
await ensureAuth()
|
||||
const list = await getClient().collection(COLLECTION).getFullList({ sort: '-created' })
|
||||
return list.map(parseEntry)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user