Merge pull request #4221 from Budibase/fix/sql-4179-3196
Various SQL/table fixes
This commit is contained in:
commit
8e6608efe9
|
@ -22,8 +22,10 @@
|
|||
RelationshipTypes,
|
||||
ALLOWABLE_STRING_OPTIONS,
|
||||
ALLOWABLE_NUMBER_OPTIONS,
|
||||
ALLOWABLE_JSON_OPTIONS,
|
||||
ALLOWABLE_STRING_TYPES,
|
||||
ALLOWABLE_NUMBER_TYPES,
|
||||
ALLOWABLE_JSON_TYPES,
|
||||
SWITCHABLE_TYPES,
|
||||
} from "constants/backend"
|
||||
import { getAutoColumnInformation, buildAutoColumn } from "builderStore/utils"
|
||||
|
@ -236,6 +238,11 @@
|
|||
ALLOWABLE_NUMBER_TYPES.indexOf(field.type) !== -1
|
||||
) {
|
||||
return ALLOWABLE_NUMBER_OPTIONS
|
||||
} else if (
|
||||
originalName &&
|
||||
ALLOWABLE_JSON_TYPES.indexOf(field.type) !== -1
|
||||
) {
|
||||
return ALLOWABLE_JSON_OPTIONS
|
||||
} else if (!external) {
|
||||
return [
|
||||
...Object.values(fieldDefinitions),
|
||||
|
|
|
@ -1,16 +1,14 @@
|
|||
<script>
|
||||
import { Label, Select } from "@budibase/bbui"
|
||||
import { permissions, roles } from "stores/backend"
|
||||
import { onMount } from "svelte"
|
||||
import { Roles } from "constants/backend"
|
||||
|
||||
export let query
|
||||
export let saveId
|
||||
export let label
|
||||
|
||||
$: updateRole(roleId, saveId)
|
||||
$: getPermissions(query)
|
||||
|
||||
let roleId, loaded
|
||||
let roleId, loaded, fetched
|
||||
|
||||
async function updateRole(role, id) {
|
||||
roleId = role
|
||||
|
@ -26,19 +24,23 @@
|
|||
}
|
||||
}
|
||||
|
||||
onMount(async () => {
|
||||
if (!query || !query._id) {
|
||||
async function getPermissions(queryToFetch) {
|
||||
if (fetched?._id === queryToFetch?._id) {
|
||||
return
|
||||
}
|
||||
fetched = queryToFetch
|
||||
if (!queryToFetch || !queryToFetch._id) {
|
||||
roleId = Roles.BASIC
|
||||
loaded = true
|
||||
return
|
||||
}
|
||||
try {
|
||||
roleId = (await permissions.forResource(query._id))["read"]
|
||||
roleId = (await permissions.forResource(queryToFetch._id))["read"]
|
||||
} catch (err) {
|
||||
roleId = Roles.BASIC
|
||||
}
|
||||
loaded = true
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
{#if loaded}
|
||||
|
|
|
@ -148,20 +148,23 @@ export const RelationshipTypes = {
|
|||
}
|
||||
|
||||
export const ALLOWABLE_STRING_OPTIONS = [FIELDS.STRING, FIELDS.OPTIONS]
|
||||
|
||||
export const ALLOWABLE_STRING_TYPES = ALLOWABLE_STRING_OPTIONS.map(
|
||||
opt => opt.type
|
||||
)
|
||||
|
||||
export const ALLOWABLE_NUMBER_OPTIONS = [FIELDS.NUMBER, FIELDS.BOOLEAN]
|
||||
|
||||
export const ALLOWABLE_NUMBER_TYPES = ALLOWABLE_NUMBER_OPTIONS.map(
|
||||
opt => opt.type
|
||||
)
|
||||
|
||||
export const SWITCHABLE_TYPES = ALLOWABLE_NUMBER_TYPES.concat(
|
||||
ALLOWABLE_STRING_TYPES
|
||||
)
|
||||
export const ALLOWABLE_JSON_OPTIONS = [FIELDS.JSON, FIELDS.ARRAY]
|
||||
export const ALLOWABLE_JSON_TYPES = ALLOWABLE_JSON_OPTIONS.map(opt => opt.type)
|
||||
|
||||
export const SWITCHABLE_TYPES = [
|
||||
...ALLOWABLE_STRING_TYPES,
|
||||
...ALLOWABLE_NUMBER_TYPES,
|
||||
...ALLOWABLE_JSON_TYPES,
|
||||
]
|
||||
|
||||
export const IntegrationTypes = {
|
||||
POSTGRES: "POSTGRES",
|
||||
|
|
|
@ -525,7 +525,7 @@ module External {
|
|||
const linkTable = this.getTable(tableId)
|
||||
// @ts-ignore
|
||||
const linkPrimary = linkTable.primary[0]
|
||||
const rows = related[key].rows || []
|
||||
const rows = related[key]?.rows || []
|
||||
const found = rows.find(
|
||||
(row: { [key: string]: any }) =>
|
||||
row[linkPrimary] === relationship.id ||
|
||||
|
|
|
@ -8,7 +8,11 @@ const {
|
|||
const { isEqual } = require("lodash/fp")
|
||||
const { AutoFieldSubTypes, FieldTypes } = require("../../../constants")
|
||||
const { inputProcessing } = require("../../../utilities/rowProcessor")
|
||||
const { USERS_TABLE_SCHEMA, SwitchableTypes } = require("../../../constants")
|
||||
const {
|
||||
USERS_TABLE_SCHEMA,
|
||||
SwitchableTypes,
|
||||
CanSwitchTypes,
|
||||
} = require("../../../constants")
|
||||
const {
|
||||
isExternalTable,
|
||||
breakExternalTableId,
|
||||
|
@ -340,6 +344,23 @@ exports.foreignKeyStructure = (keyName, meta = null) => {
|
|||
return structure
|
||||
}
|
||||
|
||||
exports.areSwitchableTypes = (type1, type2) => {
|
||||
if (
|
||||
SwitchableTypes.indexOf(type1) === -1 &&
|
||||
SwitchableTypes.indexOf(type2) === -1
|
||||
) {
|
||||
return false
|
||||
}
|
||||
for (let option of CanSwitchTypes) {
|
||||
const index1 = option.indexOf(type1),
|
||||
index2 = option.indexOf(type2)
|
||||
if (index1 !== -1 && index2 !== -1 && index1 !== index2) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
exports.hasTypeChanged = (table, oldTable) => {
|
||||
if (!oldTable) {
|
||||
return false
|
||||
|
@ -350,7 +371,7 @@ exports.hasTypeChanged = (table, oldTable) => {
|
|||
continue
|
||||
}
|
||||
const newType = table.schema[key].type
|
||||
if (oldType !== newType && SwitchableTypes.indexOf(oldType) === -1) {
|
||||
if (oldType !== newType && !exports.areSwitchableTypes(oldType, newType)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -45,13 +45,16 @@ exports.FieldTypes = {
|
|||
INTERNAL: "internal",
|
||||
}
|
||||
|
||||
exports.SwitchableTypes = [
|
||||
exports.FieldTypes.STRING,
|
||||
exports.FieldTypes.OPTIONS,
|
||||
exports.FieldTypes.NUMBER,
|
||||
exports.FieldTypes.BOOLEAN,
|
||||
exports.CanSwitchTypes = [
|
||||
[exports.FieldTypes.JSON, exports.FieldTypes.ARRAY],
|
||||
[exports.FieldTypes.STRING, exports.FieldTypes.OPTIONS],
|
||||
[exports.FieldTypes.BOOLEAN, exports.FieldTypes.NUMBER],
|
||||
]
|
||||
|
||||
exports.SwitchableTypes = exports.CanSwitchTypes.reduce((prev, current) =>
|
||||
prev ? prev.concat(current) : current
|
||||
)
|
||||
|
||||
exports.RelationshipTypes = {
|
||||
ONE_TO_MANY: "one-to-many",
|
||||
MANY_TO_ONE: "many-to-one",
|
||||
|
|
|
@ -157,6 +157,7 @@ function copyExistingPropsOver(
|
|||
if (
|
||||
existingTableSchema[key].type === FieldTypes.LINK ||
|
||||
existingTableSchema[key].type === FieldTypes.OPTIONS ||
|
||||
existingTableSchema[key].type === FieldTypes.ARRAY ||
|
||||
((!table.schema[key] || table.schema[key].type === FieldTypes.NUMBER) &&
|
||||
existingTableSchema[key].type === FieldTypes.BOOLEAN)
|
||||
) {
|
||||
|
|
Loading…
Reference in New Issue