import type { MockServer } from 'insomnia-data'; import { database as db, models } from 'insomnia-data'; import * as workspace from './workspace'; const { type } = models.mockServer; export function create(patch: Partial = {}) { if (!patch.parentId) { throw new Error('New MockServer missing `parentId`: ' + JSON.stringify(patch)); } return db.docCreate(type, patch); } export async function getOrCreateForParentId(workspaceId: string, patch: Partial = {}) { const mockServer = await db.findOne(type, { parentId: workspaceId, }); if (!mockServer) { return db.docCreate(type, { ...patch, parentId: workspaceId }); } return mockServer; } export function update(mockServer: MockServer, patch: Partial = {}) { return db.docUpdate(mockServer, patch); } export function getById(id: string) { return db.findOne(type, { _id: id }); } export function getByParentId(parentId: string) { return db.findOne(type, { parentId }); } export async function findByProjectId(projectId: string) { const workspaces = await workspace.findByParentId(projectId); return db.find(type, { parentId: { $in: workspaces.map(ws => ws._id) } }); } export function removeWhere(parentId: string) { return db.removeWhere(type, { parentId }); } export function remove(mockServer: MockServer) { return db.remove(mockServer); } export function all() { return db.find(type); }