Fix generated columns being required. (#9200)

* Fix generated columns being required. Also prevent schema changes on generated columns.

* Fix type errors

* Disable `unique` and `nullable` instead of not showing them.

* Fix other type error

* Nullable check small refactor

* Fixed MSSQL query

* Fixed oracle query
This commit is contained in:
Oreille
2021-10-29 18:24:21 +02:00
committed by GitHub
parent bb9b8f5d36
commit 8df071a3a2
11 changed files with 35 additions and 15 deletions

View File

@@ -1,18 +1,18 @@
<template>
<div class="form">
<div class="field half-left">
<div v-if="!isGenerated" class="field half-left">
<div class="label type-label">{{ t('readonly') }}</div>
<v-checkbox v-model="readonly" :label="t('disabled_editing_value')" block />
</div>
<div class="field half-right">
<div class="label type-label">{{ t('hidden') }}</div>
<v-checkbox v-model="hidden" :label="t('hidden_on_detail')" block />
<div v-if="!isGenerated" class="field half-right">
<div class="label type-label">{{ t('required') }}</div>
<v-checkbox v-model="required" :label="t('require_value_to_be_set')" block />
</div>
<div class="field half-left">
<div class="label type-label">{{ t('required') }}</div>
<v-checkbox v-model="required" :label="t('require_value_to_be_set')" block />
<div class="label type-label">{{ t('hidden') }}</div>
<v-checkbox v-model="hidden" :label="t('hidden_on_detail')" block />
</div>
<div v-if="type !== 'group'" class="field full">
@@ -84,8 +84,9 @@ export default defineComponent({
const { field } = storeToRefs(fieldDetailStore);
const type = computed(() => field.value.type);
const isGenerated = computed(() => field.value.schema?.is_generated);
return { t, readonly, hidden, required, note, translations, type };
return { t, readonly, hidden, required, note, translations, type, isGenerated };
},
});
</script>

View File

@@ -85,7 +85,7 @@
</div>
</template>
<div v-if="!isAlias && !isPrimaryKey" class="field full">
<div v-if="!isAlias && !isPrimaryKey && !isGenerated" class="field full">
<div class="label type-label">{{ t('default_value') }}</div>
<v-input v-if="['string', 'uuid'].includes(type)" v-model="defaultValue" class="monospace" placeholder="NULL" />
@@ -136,12 +136,12 @@
<div v-if="!isAlias" class="field half-left">
<div class="label type-label">{{ t('nullable') }}</div>
<v-checkbox v-model="nullable" :label="t('allow_null_value')" block />
<v-checkbox v-model="nullable" :disabled="!isGenerated" :label="t('allow_null_value')" block />
</div>
<div v-if="!isAlias" class="field half-right">
<div class="label type-label">{{ t('unique') }}</div>
<v-checkbox v-model="unique" :label="t('value_unique')" block />
<v-checkbox v-model="unique" :disabled="!isGenerated" :label="t('value_unique')" block />
</div>
</div>
</div>
@@ -279,6 +279,10 @@ export default defineComponent({
return fieldDetailStore.field.schema?.is_primary_key === true;
});
const isGenerated = computed(() => {
return fieldDetailStore.field.schema?.is_generated;
});
return {
t,
typesWithLabels,
@@ -303,6 +307,7 @@ export default defineComponent({
unique,
isPrimaryKey,
isExisting,
isGenerated,
};
function useOnCreate() {