Skip to content

Commit

Permalink
Merge pull request #12185 from Budibase/feature/budi-7607-migrate-use…
Browse files Browse the repository at this point in the history
…r-relationship-columns-to-the-new-user-column-6

Replace several instances of `any` with `DatabaseQueryOpts`.
  • Loading branch information
samwho authored Oct 27, 2023
2 parents 9edaca0 + ae356b6 commit 731ff06
Show file tree
Hide file tree
Showing 10 changed files with 63 additions and 34 deletions.
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

0 comments on commit 731ff06

Please sign in to comment.