mirror of
https://github.com/james-m-jordan/morphik-core.git
synced 2025-05-09 19:32:38 +00:00
71 lines
1.7 KiB
TypeScript
71 lines
1.7 KiB
TypeScript
/**
|
|
* File-based notebook data store
|
|
* This provides permanent storage for notebooks in a JSON file
|
|
*/
|
|
|
|
import { readFileSync, writeFileSync } from 'fs';
|
|
import { resolve } from 'path';
|
|
|
|
export interface Notebook {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
created_at: string;
|
|
}
|
|
|
|
interface NotebooksData {
|
|
notebooks: Notebook[];
|
|
lastUpdated: string;
|
|
}
|
|
|
|
// Path to the notebooks storage file
|
|
const NOTEBOOKS_FILE_PATH = resolve(process.cwd(), 'ui-component/notebook-storage/notebooks.json');
|
|
|
|
// Default notebooks in case file is missing or corrupted
|
|
const DEFAULT_NOTEBOOKS: Notebook[] = [
|
|
{
|
|
id: "nb_default_1",
|
|
name: "Research Papers",
|
|
description: "Collection of scientific papers and research documents",
|
|
created_at: "2023-01-15T12:00:00Z"
|
|
},
|
|
{
|
|
id: "nb_default_2",
|
|
name: "Project Documentation",
|
|
description: "Technical specifications and project documents",
|
|
created_at: "2023-01-20T14:30:00Z"
|
|
}
|
|
];
|
|
|
|
/**
|
|
* Load notebooks from file
|
|
*/
|
|
export const loadNotebooksFromFile = (): Notebook[] => {
|
|
try {
|
|
// Read the notebooks JSON file
|
|
const fileData = readFileSync(NOTEBOOKS_FILE_PATH, 'utf8');
|
|
const data: NotebooksData = JSON.parse(fileData);
|
|
|
|
return data.notebooks || DEFAULT_NOTEBOOKS;
|
|
} catch (error) {
|
|
console.error('Error loading notebooks from file:', error);
|
|
return DEFAULT_NOTEBOOKS;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Save notebooks to file
|
|
*/
|
|
export const saveNotebooksToFile = (notebooks: Notebook[]): void => {
|
|
try {
|
|
const data: NotebooksData = {
|
|
notebooks,
|
|
lastUpdated: new Date().toISOString()
|
|
};
|
|
|
|
writeFileSync(NOTEBOOKS_FILE_PATH, JSON.stringify(data, null, 2), 'utf8');
|
|
} catch (error) {
|
|
console.error('Error saving notebooks to file:', error);
|
|
}
|
|
};
|