46 lines
1.1 KiB
TypeScript
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')
|
|
}
|