fix: 数据库设置增加范围限制

pull/189/head
ssongliu 2023-03-07 18:21:08 +08:00 committed by ssongliu
parent d7ab5ff1b7
commit 0ff7c418bd
2 changed files with 27 additions and 18 deletions

View File

@ -2,9 +2,10 @@
<div> <div>
<span style="float: left; line-height: 30px">{{ $t('database.longQueryTime') }}</span> <span style="float: left; line-height: 30px">{{ $t('database.longQueryTime') }}</span>
<div style="margin-left: 5px; float: left"> <div style="margin-left: 5px; float: left">
<el-input type="number" v-model.number="variables.long_query_time"> <el-input @input="checkValid" type="number" v-model.number="variables.long_query_time">
<template #append>{{ $t('database.second') }}</template> <template #append>{{ $t('database.second') }}</template>
</el-input> </el-input>
<span v-if="errTime" class="input-error">{{ $t('commons.rule.numberRange', [1, 600]) }}</span>
</div> </div>
<span style="float: left; margin-left: 20px; line-height: 30px">{{ $t('database.isOn') }}</span> <span style="float: left; margin-left: 20px; line-height: 30px">{{ $t('database.isOn') }}</span>
<el-switch <el-switch
@ -25,7 +26,7 @@
:placeholder="$t('database.noData')" :placeholder="$t('database.noData')"
:indent-with-tab="true" :indent-with-tab="true"
:tabSize="4" :tabSize="4"
style="margin-top: 10px; height: calc(100vh - 392px)" style="margin-top: 10px; height: calc(100vh - 392px); width: 100%"
:lineWrapping="true" :lineWrapping="true"
:matchBrackets="true" :matchBrackets="true"
theme="cobalt" theme="cobalt"
@ -63,6 +64,7 @@ const handleReady = (payload) => {
const confirmDialogRef = ref(); const confirmDialogRef = ref();
const errTime = ref();
const isWatch = ref(); const isWatch = ref();
let timer: NodeJS.Timer | null = null; let timer: NodeJS.Timer | null = null;
@ -109,7 +111,14 @@ const onCancle = async () => {
variables.slow_query_log = variables.slow_query_log === 'ON' ? 'OFF' : 'ON'; variables.slow_query_log = variables.slow_query_log === 'ON' ? 'OFF' : 'ON';
}; };
const checkValid = () => {
errTime.value = !(variables.long_query_time > 0 && variables.long_query_time < 600);
};
const onSave = async () => { const onSave = async () => {
if (!(variables.long_query_time > 0 && variables.long_query_time < 600)) {
return;
}
let param = [] as Array<Database.VariablesUpdate>; let param = [] as Array<Database.VariablesUpdate>;
if (variables.slow_query_log !== oldVariables.value.slow_query_log) { if (variables.slow_query_log !== oldVariables.value.slow_query_log) {
param.push({ param: 'slow_query_log', value: variables.slow_query_log }); param.push({ param: 'slow_query_log', value: variables.slow_query_log });

View File

@ -115,7 +115,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { reactive, ref } from 'vue'; import { reactive, ref } from 'vue';
import { Rules } from '@/global/form-rules'; import { checkNumberRange, Rules } from '@/global/form-rules';
import { FormInstance } from 'element-plus'; import { FormInstance } from 'element-plus';
import { Database } from '@/api/interface/database'; import { Database } from '@/api/interface/database';
import ConfirmDialog from '@/components/confirm-dialog/index.vue'; import ConfirmDialog from '@/components/confirm-dialog/index.vue';
@ -151,23 +151,23 @@ let mysqlVariables = reactive({
long_query_time: 0, long_query_time: 0,
}); });
const variablesRules = reactive({ const variablesRules = reactive({
key_buffer_size: [Rules.number], key_buffer_size: [Rules.number, checkNumberRange(1, 102400)],
query_cache_size: [Rules.number], query_cache_size: [Rules.number, checkNumberRange(1, 102400)],
tmp_table_size: [Rules.number], tmp_table_size: [Rules.number, checkNumberRange(1, 102400)],
innodb_buffer_pool_size: [Rules.number], innodb_buffer_pool_size: [Rules.number, checkNumberRange(1, 102400)],
innodb_log_buffer_size: [Rules.number], innodb_log_buffer_size: [Rules.number, checkNumberRange(1, 102400)],
sort_buffer_size: [Rules.number], sort_buffer_size: [Rules.number, checkNumberRange(1, 102400)],
read_buffer_size: [Rules.number], read_buffer_size: [Rules.number, checkNumberRange(1, 102400)],
read_rnd_buffer_size: [Rules.number], read_rnd_buffer_size: [Rules.number, checkNumberRange(1, 102400)],
join_buffer_size: [Rules.number], join_buffer_size: [Rules.number, checkNumberRange(1, 102400)],
thread_stack: [Rules.number], thread_stack: [Rules.number, checkNumberRange(1, 102400)],
binlog_cache_size: [Rules.number], binlog_cache_size: [Rules.number, checkNumberRange(1, 102400)],
thread_cache_size: [Rules.number], thread_cache_size: [Rules.number, checkNumberRange(1, 10000)],
table_open_cache: [Rules.number], table_open_cache: [Rules.number, checkNumberRange(1, 10000)],
max_connections: [Rules.number], max_connections: [Rules.number, checkNumberRange(1, 10000)],
slow_query_log: [Rules.requiredSelect], slow_query_log: [Rules.requiredSelect],
long_query_time: [Rules.number], long_query_time: [Rules.number, checkNumberRange(1, 102400)],
}); });
const mysqlName = ref(); const mysqlName = ref();