(csvPath: string)
| 724 | } |
| 725 | |
| 726 | async function dbReadSidecar(csvPath: string): Promise<DatabaseSidecar | null> { |
| 727 | const schemaPath = databaseSchemaPathFor(dbToPosix(csvPath)) |
| 728 | if (!schemaPath) return null |
| 729 | const raw = await readFileTextOrNull(schemaPath) |
| 730 | if (raw === null) return null |
| 731 | let sidecar: DatabaseSidecar | null |
| 732 | try { |
| 733 | sidecar = dbNormalizeSidecar(JSON.parse(raw)) |
| 734 | } catch { |
| 735 | return null |
| 736 | } |
| 737 | if (sidecar?.pages) sidecar.pages = dbPagesToFull(dbToPosix(csvPath), sidecar.pages) |
| 738 | return sidecar |
| 739 | } |
| 740 | |
| 741 | async function dbPersistSidecar(csvPath: string, sidecar: DatabaseSidecar): Promise<void> { |
| 742 | const schemaPath = databaseSchemaPathFor(dbToPosix(csvPath)) |
no test coverage detected