mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-29 23:53:57 +00:00
mongo: create collection backup
This commit is contained in:
@@ -359,10 +359,17 @@
|
|||||||
{
|
{
|
||||||
label: 'Drop collection',
|
label: 'Drop collection',
|
||||||
isDropCollection: true,
|
isDropCollection: true,
|
||||||
|
requiresWriteAccess: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Rename collection',
|
label: 'Rename collection',
|
||||||
isRenameCollection: true,
|
isRenameCollection: true,
|
||||||
|
requiresWriteAccess: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Create collection backup',
|
||||||
|
isDuplicateCollection: true,
|
||||||
|
requiresWriteAccess: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
divider: true,
|
divider: true,
|
||||||
@@ -516,8 +523,8 @@
|
|||||||
showModal(ConfirmModal, {
|
showModal(ConfirmModal, {
|
||||||
message: `Really drop collection ${data.pureName}?`,
|
message: `Really drop collection ${data.pureName}?`,
|
||||||
onConfirm: async () => {
|
onConfirm: async () => {
|
||||||
saveScriptToDatabase(_.pick(data, ['conid', 'database']), `db.dropCollection('${data.pureName}')`);
|
|
||||||
const dbid = _.pick(data, ['conid', 'database']);
|
const dbid = _.pick(data, ['conid', 'database']);
|
||||||
|
saveScriptToDatabase(dbid, `db.dropCollection('${data.pureName}')`);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else if (menu.isRenameCollection) {
|
} else if (menu.isRenameCollection) {
|
||||||
@@ -534,6 +541,16 @@
|
|||||||
apiCall('database-connections/sync-model', dbid);
|
apiCall('database-connections/sync-model', dbid);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
} else if (menu.isDuplicateCollection) {
|
||||||
|
const newName = `_${data.pureName}_${dateFormat(new Date(), 'yyyy-MM-dd-hh-mm-ss')}`;
|
||||||
|
|
||||||
|
showModal(ConfirmModal, {
|
||||||
|
message: `Really create collection copy named ${newName}?`,
|
||||||
|
onConfirm: async () => {
|
||||||
|
const dbid = _.pick(data, ['conid', 'database']);
|
||||||
|
saveScriptToDatabase(dbid, `db.collection('${data.pureName}').aggregate([{$out: '${newName}'}]).toArray()`);
|
||||||
|
},
|
||||||
|
});
|
||||||
} else if (menu.isDuplicateTable) {
|
} else if (menu.isDuplicateTable) {
|
||||||
const driver = await getDriver();
|
const driver = await getDriver();
|
||||||
const dmp = driver.createDumper();
|
const dmp = driver.createDumper();
|
||||||
|
|||||||
@@ -90,9 +90,10 @@ const driver = {
|
|||||||
},
|
},
|
||||||
async script(pool, sql) {
|
async script(pool, sql) {
|
||||||
let func;
|
let func;
|
||||||
func = eval(`(db,ObjectId) => { ${sql} }`);
|
func = eval(`(db,ObjectId) => ${sql}`);
|
||||||
const db = await getScriptableDb(pool);
|
const db = await getScriptableDb(pool);
|
||||||
func(db, ObjectId);
|
const res = func(db, ObjectId);
|
||||||
|
if (isPromise(res)) await res;
|
||||||
},
|
},
|
||||||
async stream(pool, sql, options) {
|
async stream(pool, sql, options) {
|
||||||
let func;
|
let func;
|
||||||
|
|||||||
Reference in New Issue
Block a user