Browse Source

user search

pull/4023/head
Martin McKeaveney 5 years ago
parent
commit
36f3bbf6dd
  1. 8068
      package-lock.json
  2. 1
      packages/builder/cypress/setup.js
  3. 1
      packages/builder/src/builderStore/dataBinding.js
  4. 28
      packages/server/src/api/controllers/row.js
  5. 12
      packages/server/src/api/controllers/table.js
  6. 888
      packages/server/yarn.lock

8068
package-lock.json

File diff suppressed because it is too large

1
packages/builder/cypress/setup.js

@ -5,7 +5,6 @@
const rimraf = require("rimraf")
const { join, resolve } = require("path")
// const run = require("../../cli/src/commands/run/runHandler")
const initialiseBudibase = require("../../server/src/utilities/initialiseBudibase")
const homedir = join(require("os").homedir(), ".budibase")

1
packages/builder/src/builderStore/dataBinding.js

@ -4,7 +4,6 @@ import { backendUiStore, store } from "builderStore"
import { findAllMatchingComponents, findComponentPath } from "./storeUtils"
import { makePropSafe } from "@budibase/string-templates"
import { TableNames } from "../constants"
import { search } from "../../../server/src/api/controllers/row"
// Regex to match all instances of template strings
const CAPTURE_VAR_INSIDE_TEMPLATE = /{{([^}]+)}}/g

28
packages/server/src/api/controllers/row.js

@ -233,35 +233,27 @@ exports.createIndex = async function(ctx) {
const appId = "app_1987903cf3604d459969c80cf17651a0"
const db = new CouchDB(appId)
// ctx.body = await db.get("_design/search_ddoc")
ctx.body = await db.createIndex({
index: {
fields: ctx.request.body.fields,
name: "search_index",
name: "other_search_index",
ddoc: "search_ddoc",
type: "json",
},
})
// ctx.body = await db.getIndexes()
}
exports.search = async function(ctx) {
// const appId = ctx.user.appId
const appId = "app_1987903cf3604d459969c80cf17651a0"
// const { pageSize = 10, cursor } = ctx.query
// special case for users, fetch through the user controller
// let rows
// SHOULD WE PREVENT SEARCHING FOR USERS?
// if (ctx.params.tableId === ViewNames.USERS) {
// await usersController.fetch(ctx)
// rows = ctx.body
// } else {
const appId = ctx.user.appId
// const appId = "app_1987903cf3604d459969c80cf17651a0"
const db = new CouchDB(appId)
const {
query,
pagination: { pageSize = 10, cursor, reverse },
pagination: { pageSize = 10, cursor },
} = ctx.request.body
query.tableId = ctx.params.tableId
@ -277,8 +269,16 @@ exports.search = async function(ctx) {
sort: ["_id"],
skip: 1,
})
const rows = response.docs
// delete passwords from users
if (query.tableId === ViewNames.USERS) {
for (let row of rows) {
delete row.password
}
}
ctx.body = await linkRows.attachLinkInfo(appId, rows)
}

12
packages/server/src/api/controllers/table.js

@ -38,6 +38,18 @@ async function checkForColumnUpdates(db, oldTable, updatedTable) {
return updatedRows
}
async function updateSearchIndex(fields) {
console.log("Updating stuff")
const resp = await db.createIndex({
index: {
fields,
name: "search_index",
ddoc: "search_ddoc",
type: "json",
},
})
}
exports.fetch = async function(ctx) {
const db = new CouchDB(ctx.user.appId)
const body = await db.allDocs(

888
packages/server/yarn.lock

File diff suppressed because it is too large
Loading…
Cancel
Save