From 1ee6761a6917f351e59b2e3b010c6851fc55d87f Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 9 Nov 2022 17:53:35 +0000 Subject: [PATCH] Some minor updates based on getting the worker using the new pouchlike impl. --- packages/backend-core/src/couch/pouchLike.ts | 13 ++++++------- packages/backend-core/src/db/views.ts | 6 +++--- packages/types/src/documents/pouch.ts | 2 +- packages/worker/src/sdk/users/users.ts | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/backend-core/src/couch/pouchLike.ts b/packages/backend-core/src/couch/pouchLike.ts index d605ec3d04..73555b1b7c 100644 --- a/packages/backend-core/src/couch/pouchLike.ts +++ b/packages/backend-core/src/couch/pouchLike.ts @@ -1,5 +1,5 @@ import Nano from "nano" -import { AnyDocument } from "@budibase/types" +import { AllDocsResponse, AnyDocument } from "@budibase/types" import { getCouchInfo } from "./couch" import { directCouchCall } from "./utils" import { getPouchDB } from "./pouchDB" @@ -23,10 +23,6 @@ export type QueryOpts = { keys?: string[] } -type QueryResp = Promise<{ - rows: { doc?: T | any; value?: any }[] -}> - export class PouchLike { public readonly name: string private static nano: Nano.ServerScope @@ -127,12 +123,15 @@ export class PouchLike { return this.updateOutput(() => db.bulk({ docs: documents })) } - async allDocs(params: QueryOpts): QueryResp { + async allDocs(params: QueryOpts): Promise> { const db = await this.checkSetup() return this.updateOutput(() => db.list(params)) } - async query(viewName: string, params: QueryOpts): QueryResp { + async query( + viewName: string, + params: QueryOpts + ): Promise> { const db = await this.checkSetup() const [database, view] = viewName.split("/") return this.updateOutput(() => db.view(database, view, params)) diff --git a/packages/backend-core/src/db/views.ts b/packages/backend-core/src/db/views.ts index 06919fd188..8ba508050f 100644 --- a/packages/backend-core/src/db/views.ts +++ b/packages/backend-core/src/db/views.ts @@ -131,16 +131,16 @@ export const queryView = async ( opts?: QueryViewOptions ): Promise => { try { - let response = await db.query(`database/${viewName}`, params) + let response = await db.query(`database/${viewName}`, params) const rows = response.rows const docs = rows.map(row => (params.include_docs ? row.doc : row.value)) // if arrayResponse has been requested, always return array regardless of length if (opts?.arrayResponse) { - return docs + return docs as T[] } else { // return the single document if there is only one - return docs.length <= 1 ? docs[0] : docs + return docs.length <= 1 ? (docs[0] as T) : (docs as T[]) } } catch (err: any) { if (err != null && err.name === "not_found") { diff --git a/packages/types/src/documents/pouch.ts b/packages/types/src/documents/pouch.ts index f9ed43b32f..fa66bfa57f 100644 --- a/packages/types/src/documents/pouch.ts +++ b/packages/types/src/documents/pouch.ts @@ -8,7 +8,7 @@ export interface RowResponse { key: string error: string value: RowValue - doc: T + doc?: T } export interface AllDocsResponse { diff --git a/packages/worker/src/sdk/users/users.ts b/packages/worker/src/sdk/users/users.ts index 539ac21300..e2215cee80 100644 --- a/packages/worker/src/sdk/users/users.ts +++ b/packages/worker/src/sdk/users/users.ts @@ -479,7 +479,7 @@ export const bulkDelete = async ( (user: RowResponse) => { return user.doc } - ) + ) as User[] // Delete from DB const toDelete = usersToDelete.map(user => ({