import type { Query, WorkspaceMeta } from 'insomnia-data'; import { database as db, models } from 'insomnia-data'; const { type } = models.workspaceMeta; export function list(query?: Query, sort?: Record, limit?: number) { return db.find(type, query, sort, limit); } export const getById = (_id: string) => db.findOne(type, { _id }); export function create(patch: Partial = {}) { if (!patch.parentId) { throw new Error(`New WorkspaceMeta missing parentId ${JSON.stringify(patch)}`); } return db.docCreate(type, patch); } export function update(workspaceMeta: WorkspaceMeta, patch: Partial = {}) { return db.docUpdate(workspaceMeta, patch); } export async function updateByParentId(parentId: string, patch: Partial = {}) { const meta = await getByParentId(parentId); return meta && db.docUpdate(meta, patch); } export async function getByParentId(parentId: string) { return db.findOne(type, { parentId }); } export async function getOrCreateByParentId(parentId: string) { const doc = await getByParentId(parentId); return doc || create({ parentId }); }