// @flow import * as db from '../common/database'; import { PREVIEW_MODE_FRIENDLY } from '../common/constants'; import type { BaseModel } from './index'; export const name = 'Request Meta'; export const type = 'RequestMeta'; export const prefix = 'reqm'; export const canDuplicate = false; export const canSync = false; type BaseRequestMeta = { parentId: string, previewMode: string, responseFilter: string, responseFilterHistory: Array, activeResponseId: string | null, savedRequestBody: Object, pinned: boolean, lastActive: number, downloadPath: string | null, }; export type RequestMeta = BaseModel & BaseRequestMeta; export function init() { return { parentId: null, previewMode: PREVIEW_MODE_FRIENDLY, responseFilter: '', responseFilterHistory: [], activeResponseId: null, savedRequestBody: {}, pinned: false, lastActive: 0, downloadPath: null, }; } export function migrate(doc: RequestMeta): RequestMeta { return doc; } export function create(patch: Object = {}) { if (!patch.parentId) { throw new Error('New RequestMeta missing `parentId` ' + JSON.stringify(patch)); } return db.docCreate(type, patch); } export function update(requestMeta: RequestMeta, patch: Object) { return db.docUpdate(requestMeta, patch); } export function getByParentId(parentId: string) { return db.getWhere(type, { parentId }); } export async function getOrCreateByParentId(parentId: string) { const requestMeta = await getByParentId(parentId); if (requestMeta) { return requestMeta; } return create({ parentId }); } export function all(): Promise> { return db.all(type); }