mongo driver - collection export scripts

This commit is contained in:
Jan Prochazka
2024-08-20 09:15:10 +02:00
parent 9bc654cd38
commit 30e3bc6eeb
4 changed files with 40 additions and 9 deletions

View File

@@ -154,4 +154,11 @@ export const driverBase = {
getFilterBehaviour(dataType: string, standardFilterBehaviours) { getFilterBehaviour(dataType: string, standardFilterBehaviours) {
return detectSqlFilterBehaviour(dataType); return detectSqlFilterBehaviour(dataType);
}, },
getCollectionExportQueryScript(collection: string, condition: any, sort: any) {
return null;
},
getCollectionExportQueryJson(collection: string, condition: any, sort: any) {
return null;
},
}; };

View File

@@ -159,7 +159,7 @@ export interface EngineDriver extends FilterBehaviourProvider {
getAuthTokenFromCode(connection, options): Promise<string>; getAuthTokenFromCode(connection, options): Promise<string>;
getAccessTokenFromAuth(connection, req): Promise<string | null>; getAccessTokenFromAuth(connection, req): Promise<string | null>;
getCollectionExportQueryScript(collection: string, condition: any, sort: any): string; getCollectionExportQueryScript(collection: string, condition: any, sort: any): string;
getCollectionExportQueryJson(collection: string, condition: any, sort: any): string; getCollectionExportQueryJson(collection: string, condition: any, sort: any): {};
analyserClass?: any; analyserClass?: any;
dumperClass?: any; dumperClass?: any;

View File

@@ -172,17 +172,27 @@
// $: if (onChangeGrider) onChangeGrider(grider); // $: if (onChangeGrider) onChangeGrider(grider);
function getExportQuery() { function getExportQuery() {
return `db.collection('${pureName}') return display?.driver?.getCollectionExportQueryScript?.(
.find(${JSON.stringify(buildConditionForGrid($$props) || {})}) pureName,
.sort(${JSON.stringify(buildMongoSort($$props) || {})})`; buildConditionForGrid($$props),
buildMongoSort($$props)
);
// return `db.collection('${pureName}')
// .find(${JSON.stringify(buildConditionForGrid($$props) || {})})
// .sort(${JSON.stringify(buildMongoSort($$props) || {})})`;
} }
function getExportQueryJson() { function getExportQueryJson() {
return { return display?.driver?.getCollectionExportQueryJson?.(
collection: pureName, pureName,
condition: buildConditionForGrid($$props) || {}, buildConditionForGrid($$props),
sort: buildMongoSort($$props) || {}, buildMongoSort($$props)
}; );
// return {
// collection: pureName,
// condition: buildConditionForGrid($$props) || {},
// sort: buildMongoSort($$props) || {},
// };
} }
export async function exportGrid() { export async function exportGrid() {

View File

@@ -1,4 +1,5 @@
const { driverBase } = global.DBGATE_TOOLS; const { driverBase } = global.DBGATE_TOOLS;
const { convertToMongoCondition } = require('./convertToMongoCondition');
const Dumper = require('./Dumper'); const Dumper = require('./Dumper');
const { mongoSplitterOptions } = require('dbgate-query-splitter/lib/options'); const { mongoSplitterOptions } = require('dbgate-query-splitter/lib/options');
@@ -97,6 +98,19 @@ const driver = {
getFilterBehaviour(dataType, standardFilterBehaviours) { getFilterBehaviour(dataType, standardFilterBehaviours) {
return standardFilterBehaviours.mongoFilterBehaviour; return standardFilterBehaviours.mongoFilterBehaviour;
}, },
getCollectionExportQueryScript(collection, condition, sort) {
return `db.collection('${collection}')
.find(${JSON.stringify(convertToMongoCondition(condition || {}))})
.sort(${JSON.stringify(sort || {})})`;
},
getCollectionExportQueryJson(collection, condition, sort) {
return {
collection,
condition: convertToMongoCondition(condition || {}),
sort: sort || {},
};
},
}; };
module.exports = driver; module.exports = driver;