Files
ims/lib/offline/db.ts
T

46 lines
1.1 KiB
TypeScript

import { openDB, type IDBPDatabase } from 'idb'
export interface PendingReport {
id?: number
zone_token: string
incident_type: string
description: string
injury_involved: boolean
asset_involved: boolean
medical_status?: string
created_at: string
}
let dbPromise: Promise<IDBPDatabase> | null = null
function getDb(): Promise<IDBPDatabase> {
if (!dbPromise) {
dbPromise = openDB('ims-offline', 1, {
upgrade(db) {
db.createObjectStore('pending_reports', { keyPath: 'id', autoIncrement: true })
},
})
}
return dbPromise
}
export async function addPendingReport(report: Omit<PendingReport, 'id'>): Promise<number> {
const db = await getDb()
return db.add('pending_reports', report) as Promise<number>
}
export async function getPendingReports(): Promise<PendingReport[]> {
const db = await getDb()
return db.getAll('pending_reports')
}
export async function removePendingReport(id: number): Promise<void> {
const db = await getDb()
return db.delete('pending_reports', id)
}
export async function getPendingCount(): Promise<number> {
const db = await getDb()
return db.count('pending_reports')
}