mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-03 09:24:00 +00:00
create database modal
This commit is contained in:
@@ -99,4 +99,11 @@ module.exports = {
|
|||||||
await this.ensureOpened(conid);
|
await this.ensureOpened(conid);
|
||||||
return { status: 'ok' };
|
return { status: 'ok' };
|
||||||
},
|
},
|
||||||
|
|
||||||
|
createDatabase_meta: 'post',
|
||||||
|
async createDatabase({ conid, name }) {
|
||||||
|
const opened = await this.ensureOpened(conid);
|
||||||
|
opened.subprocess.send({ msgtype: 'createDatabase', name });
|
||||||
|
return { status: 'ok' };
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -65,9 +65,18 @@ function handlePing() {
|
|||||||
lastPing = new Date().getTime();
|
lastPing = new Date().getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function handleCreateDatabase({ name }) {
|
||||||
|
const driver = engines(storedConnection);
|
||||||
|
systemConnection = await driverConnect(driver, storedConnection);
|
||||||
|
console.log(`RUNNING SCRIPT: CREATE DATABASE ${driver.dialect.quoteIdentifier(name)}`);
|
||||||
|
await driver.query(systemConnection, `CREATE DATABASE ${driver.dialect.quoteIdentifier(name)}`);
|
||||||
|
await handleRefresh();
|
||||||
|
}
|
||||||
|
|
||||||
const messageHandlers = {
|
const messageHandlers = {
|
||||||
connect: handleConnect,
|
connect: handleConnect,
|
||||||
ping: handlePing,
|
ping: handlePing,
|
||||||
|
createDatabase: handleCreateDatabase,
|
||||||
};
|
};
|
||||||
|
|
||||||
async function handleMessage({ msgtype, ...other }) {
|
async function handleMessage({ msgtype, ...other }) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import axios from '../utility/axios';
|
|||||||
import { filterName } from '@dbgate/datalib';
|
import { filterName } from '@dbgate/datalib';
|
||||||
import ConfirmModal from '../modals/ConfirmModal';
|
import ConfirmModal from '../modals/ConfirmModal';
|
||||||
import { useConfig } from '../utility/metadataLoaders';
|
import { useConfig } from '../utility/metadataLoaders';
|
||||||
|
import CreateDatabaseModal from '../modals/CreateDatabaseModal';
|
||||||
|
|
||||||
function Menu({ data, setOpenedConnections, openedConnections, config, showModal }) {
|
function Menu({ data, setOpenedConnections, openedConnections, config, showModal }) {
|
||||||
const handleEdit = () => {
|
const handleEdit = () => {
|
||||||
@@ -22,6 +23,9 @@ function Menu({ data, setOpenedConnections, openedConnections, config, showModal
|
|||||||
/>
|
/>
|
||||||
));
|
));
|
||||||
};
|
};
|
||||||
|
const handleCreateDatabase = () => {
|
||||||
|
showModal((modalState) => <CreateDatabaseModal modalState={modalState} conid={data._id} />);
|
||||||
|
};
|
||||||
const handleRefresh = () => {
|
const handleRefresh = () => {
|
||||||
axios.post('server-connections/refresh', { conid: data._id });
|
axios.post('server-connections/refresh', { conid: data._id });
|
||||||
};
|
};
|
||||||
@@ -46,6 +50,9 @@ function Menu({ data, setOpenedConnections, openedConnections, config, showModal
|
|||||||
{openedConnections.includes(data._id) && (
|
{openedConnections.includes(data._id) && (
|
||||||
<DropDownMenuItem onClick={handleDisconnect}>Disconnect</DropDownMenuItem>
|
<DropDownMenuItem onClick={handleDisconnect}>Disconnect</DropDownMenuItem>
|
||||||
)}
|
)}
|
||||||
|
{openedConnections.includes(data._id) && (
|
||||||
|
<DropDownMenuItem onClick={handleCreateDatabase}>Create database</DropDownMenuItem>
|
||||||
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
32
packages/web/src/modals/CreateDatabaseModal.js
Normal file
32
packages/web/src/modals/CreateDatabaseModal.js
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import axios from '../utility/axios';
|
||||||
|
import ModalBase from './ModalBase';
|
||||||
|
import { FormTextField, FormSubmit } from '../utility/forms';
|
||||||
|
import { Formik, Form } from 'formik';
|
||||||
|
import ModalHeader from './ModalHeader';
|
||||||
|
import ModalContent from './ModalContent';
|
||||||
|
import ModalFooter from './ModalFooter';
|
||||||
|
|
||||||
|
export default function CreateDatabaseModal({ modalState, conid }) {
|
||||||
|
const handleSubmit = async (values) => {
|
||||||
|
const { name } = values;
|
||||||
|
axios.post('server-connections/create-database', { conid, name });
|
||||||
|
|
||||||
|
modalState.close();
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<ModalBase modalState={modalState}>
|
||||||
|
<ModalHeader modalState={modalState}>Create database</ModalHeader>
|
||||||
|
<Formik onSubmit={handleSubmit} initialValues={{ name: 'newdb' }}>
|
||||||
|
<Form>
|
||||||
|
<ModalContent>
|
||||||
|
<FormTextField label="Database name" name="name" />
|
||||||
|
</ModalContent>
|
||||||
|
<ModalFooter>
|
||||||
|
<FormSubmit text="Create" />
|
||||||
|
</ModalFooter>
|
||||||
|
</Form>
|
||||||
|
</Formik>
|
||||||
|
</ModalBase>
|
||||||
|
);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user