Browse Source

HUE-9187 [editor] Move snippet handle to executable

Johan Ahlen 5 years ago
parent
commit
3300d74b6e

+ 3 - 3
desktop/core/src/desktop/js/apps/notebook2/execution/executable.js

@@ -371,11 +371,11 @@ export default class Executable {
   }
 
   async toContext(id) {
-    if (this.executor.snippet) {
+    if (this.snippet) {
       return {
         operationId: this.operationId,
-        snippet: this.executor.snippet.toContextJson(),
-        notebook: await this.executor.snippet.parentNotebook.toContextJson()
+        snippet: this.snippet.toContextJson(),
+        notebook: await this.snippet.parentNotebook.toContextJson()
       };
     }
 

+ 2 - 5
desktop/core/src/desktop/js/apps/notebook2/execution/executor.js

@@ -30,7 +30,6 @@ class Executor {
    * @param {string} [options.database]
    * @param {function} [options.defaultLimit]
    * @param {boolean} [options.isOptimizerEnabled] - Default false
-   * @param {Snippet} [options.snippet] - Optional snippet for history
    */
   constructor(options) {
     this.sourceType = options.sourceType;
@@ -41,8 +40,6 @@ class Executor {
     this.isOptimizerEnabled = options.isOptimizerEnabled;
     this.executables = [];
     this.defaultLimit = options.defaultLimit || (() => {});
-
-    this.snippet = options.snippet;
   }
 
   toJs() {
@@ -61,8 +58,8 @@ class Executor {
     this.executables.forEach(executable => executable.notify());
   }
 
-  update(statementDetails, beforeExecute) {
-    const executables = syncExecutables(this, statementDetails);
+  update(statementDetails, beforeExecute, snippet) {
+    const executables = syncExecutables(this, statementDetails, snippet);
 
     // Cancel any "lost" executables and any batch chain it's part of
     executables.lost.forEach(lostExecutable => {

+ 9 - 2
desktop/core/src/desktop/js/apps/notebook2/execution/utils.js

@@ -16,7 +16,13 @@
 
 import SqlExecutable from 'apps/notebook2/execution/sqlExecutable';
 
-export const syncExecutables = (executor, statementDetails) => {
+/**
+ * @param executor
+ * @param statementDetails
+ * @param [Snippet] snippet - Optional Snippet for history
+ * @return {{all: [], edited: [], lost: [], selected: []}}
+ */
+export const syncExecutables = (executor, statementDetails, snippet) => {
   const allNewStatements = statementDetails.precedingStatements.concat(
     statementDetails.activeStatement,
     statementDetails.followingStatements
@@ -56,7 +62,8 @@ export const syncExecutables = (executor, statementDetails) => {
       executable = new SqlExecutable({
         parsedStatement: parsedStatement,
         database: activeDatabase,
-        executor: executor
+        executor: executor,
+        snippet: snippet
       });
     }
     result.all.push(executable);

+ 1 - 1
desktop/core/src/desktop/js/apps/notebook2/snippet.js

@@ -387,7 +387,7 @@ export default class Snippet {
             }
           }
           this.positionStatement(statementDetails.activeStatement);
-          this.activeExecutable(this.executor.update(statementDetails, beforeExecute));
+          this.activeExecutable(this.executor.update(statementDetails, beforeExecute, this));
           beforeExecute = false;
           if (statementDetails.activeStatement) {
             const statementsList = [];