32 lines
716 B
TypeScript
32 lines
716 B
TypeScript
import Dexie, { type Table } from "dexie"
|
|
import type { FamilyMember } from "@/types/family"
|
|
|
|
export interface GlobalSettings {
|
|
key: string
|
|
value: any
|
|
}
|
|
|
|
export interface StoredImage {
|
|
id: string
|
|
blob: Blob
|
|
mimeType: string
|
|
createdAt: string
|
|
}
|
|
|
|
export class FamilyTreeDB extends Dexie {
|
|
members!: Table<FamilyMember>
|
|
settings!: Table<GlobalSettings>
|
|
images!: Table<StoredImage>
|
|
|
|
constructor() {
|
|
super("FamilyTreeDB")
|
|
this.version(1).stores({
|
|
members: "id, fullName, fatherId, motherId, [fatherId+motherId]", // Index for searching
|
|
settings: "key", // Key-value store for rootId etc.
|
|
images: "id", // Store images by ID
|
|
})
|
|
}
|
|
}
|
|
|
|
export const db = new FamilyTreeDB()
|