Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace several instances of any with DatabaseQueryOpts. #12185

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/backend-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"test:watch": "jest --watchAll"
},
"dependencies": {
"@budibase/nano": "10.1.2",
"@budibase/nano": "10.1.3",
"@budibase/pouchdb-replication-stream": "1.2.10",
"@budibase/shared-core": "0.0.0",
"@budibase/types": "0.0.0",
Expand Down
29 changes: 21 additions & 8 deletions packages/backend-core/src/docIds/params.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
ViewName,
} from "../constants"
import { getProdAppID } from "./conversions"
import { DatabaseQueryOpts } from "@budibase/types"

/**
* If creating DB allDocs/query params with only a single top level ID this can be used, this
Expand All @@ -22,8 +23,8 @@ import { getProdAppID } from "./conversions"
export function getDocParams(
docType: string,
docId?: string | null,
otherProps: any = {}
) {
otherProps: Partial<DatabaseQueryOpts> = {}
): DatabaseQueryOpts {
if (docId == null) {
docId = ""
}
Expand All @@ -45,8 +46,8 @@ export function getDocParams(
export function getRowParams(
tableId?: string | null,
rowId?: string | null,
otherProps = {}
) {
otherProps: Partial<DatabaseQueryOpts> = {}
): DatabaseQueryOpts {
if (tableId == null) {
return getDocParams(DocumentType.ROW, null, otherProps)
}
Expand Down Expand Up @@ -88,7 +89,10 @@ export const isDatasourceId = (id: string) => {
/**
* Gets parameters for retrieving workspaces.
*/
export function getWorkspaceParams(id = "", otherProps = {}) {
export function getWorkspaceParams(
id = "",
otherProps: Partial<DatabaseQueryOpts> = {}
): DatabaseQueryOpts {
return {
...otherProps,
startkey: `${DocumentType.WORKSPACE}${SEPARATOR}${id}`,
Expand All @@ -99,7 +103,10 @@ export function getWorkspaceParams(id = "", otherProps = {}) {
/**
* Gets parameters for retrieving users.
*/
export function getGlobalUserParams(globalId: any, otherProps: any = {}) {
export function getGlobalUserParams(
globalId: any,
otherProps: Partial<DatabaseQueryOpts> = {}
): DatabaseQueryOpts {
if (!globalId) {
globalId = ""
}
Expand All @@ -117,11 +124,17 @@ export function getGlobalUserParams(globalId: any, otherProps: any = {}) {
/**
* Gets parameters for retrieving users, this is a utility function for the getDocParams function.
*/
export function getUserMetadataParams(userId?: string | null, otherProps = {}) {
export function getUserMetadataParams(
userId?: string | null,
otherProps: Partial<DatabaseQueryOpts> = {}
): DatabaseQueryOpts {
return getRowParams(InternalTable.USER_METADATA, userId, otherProps)
}

export function getUsersByAppParams(appId: any, otherProps: any = {}) {
export function getUsersByAppParams(
appId: any,
otherProps: Partial<DatabaseQueryOpts> = {}
): DatabaseQueryOpts {
const prodAppId = getProdAppID(appId)
return {
...otherProps,
Expand Down
6 changes: 1 addition & 5 deletions packages/backend-core/src/users/db.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,13 +160,9 @@ export class UserDB {
}

static async getUsersByAppAccess(opts: { appId?: string; limit?: number }) {
const params: any = {
include_docs: true,
limit: opts.limit || 50,
}
let response: User[] = await usersCore.searchGlobalUsersByAppAccess(
opts.appId,
params
{ limit: opts.limit || 50 }
)
return response
}
Expand Down
12 changes: 8 additions & 4 deletions packages/backend-core/src/users/users.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
SearchUsersRequest,
User,
DatabaseQueryOpts,
CouchFindOptions,
} from "@budibase/types"
import { getGlobalDB } from "../context"
import * as context from "../context"
Expand Down Expand Up @@ -140,7 +141,7 @@ export const getGlobalUserByEmail = async (

export const searchGlobalUsersByApp = async (
appId: any,
opts: any,
opts: DatabaseQueryOpts,
getOpts?: GetOpts
) => {
if (typeof appId !== "string") {
Expand All @@ -166,7 +167,10 @@ export const searchGlobalUsersByApp = async (
Return any user who potentially has access to the application
Admins, developers and app users with the explicitly role.
*/
export const searchGlobalUsersByAppAccess = async (appId: any, opts: any) => {
export const searchGlobalUsersByAppAccess = async (
appId: any,
opts?: { limit?: number }
) => {
const roleSelector = `roles.${appId}`

let orQuery: any[] = [
Expand All @@ -187,7 +191,7 @@ export const searchGlobalUsersByAppAccess = async (appId: any, opts: any) => {
orQuery.push(roleCheck)
}

let searchOptions = {
let searchOptions: CouchFindOptions = {
selector: {
$or: orQuery,
_id: {
Expand All @@ -198,7 +202,7 @@ export const searchGlobalUsersByAppAccess = async (appId: any, opts: any) => {
}

const resp = await directCouchFind(context.getGlobalDBName(), searchOptions)
return resp?.rows
return resp.rows
}

export const getGlobalUserByAppPage = (appId: string, user: User) => {
Expand Down
11 changes: 8 additions & 3 deletions packages/server/src/db/linkedRows/linkUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@ import { ViewName, getQueryIndex, isRelationshipColumn } from "../utils"
import { FieldTypes } from "../../constants"
import { createLinkView } from "../views/staticViews"
import { context, logging } from "@budibase/backend-core"
import { LinkDocument, LinkDocumentValue, Table } from "@budibase/types"
import {
DatabaseQueryOpts,
LinkDocument,
LinkDocumentValue,
Table,
} from "@budibase/types"

export { createLinkView } from "../views/staticViews"

Expand Down Expand Up @@ -36,13 +41,13 @@ export async function getLinkDocuments(args: {
}): Promise<LinkDocumentValue[] | LinkDocument[]> {
const { tableId, rowId, fieldName, includeDocs } = args
const db = context.getAppDB()
let params: any
let params: DatabaseQueryOpts
if (rowId) {
params = { key: [tableId, rowId] }
}
// only table is known
else {
params = { startKey: [tableId], endKey: [tableId, {}] }
params = { startkey: [tableId], endkey: [tableId, {}] }
}
if (includeDocs) {
params.include_docs = true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ import {
isOIDCConfig,
isSettingsConfig,
ConfigType,
DatabaseQueryOpts,
} from "@budibase/types"
import env from "./../../../../environment"

export const getConfigParams = () => {
export function getConfigParams(): DatabaseQueryOpts {
return {
include_docs: true,
startkey: `${DocumentType.CONFIG}${SEPARATOR}`,
Expand Down
13 changes: 10 additions & 3 deletions packages/server/src/sdk/app/links/links.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import { context } from "@budibase/backend-core"
import { isTableId } from "@budibase/backend-core/src/docIds"
import { LinkDocument, LinkDocumentValue } from "@budibase/types"
import {
DatabaseQueryOpts,
LinkDocument,
LinkDocumentValue,
} from "@budibase/types"
import { ViewName, getQueryIndex } from "../../../../src/db/utils"

export async function fetch(tableId: string): Promise<LinkDocumentValue[]> {
Expand All @@ -9,7 +13,10 @@ export async function fetch(tableId: string): Promise<LinkDocumentValue[]> {
}

const db = context.getAppDB()
const params: any = { startkey: [tableId], endkey: [tableId, {}] }
const params: DatabaseQueryOpts = {
startkey: [tableId],
endkey: [tableId, {}],
}
const linkRows = (await db.query(getQueryIndex(ViewName.LINK), params)).rows
return linkRows.map(row => row.value as LinkDocumentValue)
}
Expand All @@ -22,7 +29,7 @@ export async function fetchWithDocument(
}

const db = context.getAppDB()
const params: any = {
const params: DatabaseQueryOpts = {
startkey: [tableId],
endkey: [tableId, {}],
include_docs: true,
Expand Down
2 changes: 1 addition & 1 deletion packages/types/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
},
"jest": {},
"devDependencies": {
"@budibase/nano": "10.1.2",
"@budibase/nano": "10.1.3",
"@types/koa": "2.13.4",
"@types/node": "18.17.0",
"@types/pouchdb": "6.4.0",
Expand Down
11 changes: 7 additions & 4 deletions packages/types/src/sdk/db.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,18 @@ export type DatabaseDeleteIndexOpts = {
type?: string | undefined
}

type DBPrimitiveKey = string | number | {}
export type DatabaseKey = DBPrimitiveKey | DBPrimitiveKey[]

export type DatabaseQueryOpts = {
include_docs?: boolean
startkey?: string
endkey?: string
startkey?: DatabaseKey
endkey?: DatabaseKey
limit?: number
skip?: number
descending?: boolean
key?: string
keys?: string[]
key?: DatabaseKey
keys?: DatabaseKey[]
group?: boolean
startkey_docid?: string
}
Expand Down
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2099,10 +2099,10 @@
striptags "^3.1.1"
to-gfm-code-block "^0.1.1"

"@budibase/[email protected].2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@budibase/nano/-/nano-10.1.2.tgz#10fae5a1ab39be6a81261f40e7b7ec6d21cbdd4a"
integrity sha512-1w+YN2n/M5aZ9hBKCP4NEjdQbT8BfCLRizkdvm0Je665eEHw3aE1hvo8mon9Ro9QuDdxj1DfDMMFnym6/QUwpQ==
"@budibase/[email protected].3":
version "10.1.3"
resolved "https://registry.yarnpkg.com/@budibase/nano/-/nano-10.1.3.tgz#81b99d76b5c256a393e6ee0e284a6aecc517e4b8"
integrity sha512-UuhwjKCfVO+oVB0dbKpssZfTfb5k3CTrbrjqdx0kd971zzSRMFJ0TwvBB/2Z7kgOOA+Evoq4BSd747meEz21YA==
dependencies:
"@types/tough-cookie" "^4.0.2"
axios "^1.1.3"
Expand Down