Skip to content
Snippets Groups Projects
Unverified Commit f9db129f authored by Alexander Polyankin's avatar Alexander Polyankin Committed by GitHub
Browse files

Remove metabase-lib dependency on metabase/lib/engine (#25904)

parent ad103807
No related branches found
No related tags found
No related merge requests found
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-nocheck
import { t } from "ttag";
import { chain, assoc, getIn, assocIn, updateIn } from "icepick";
import { assoc, assocIn, chain, getIn, updateIn } from "icepick";
import _ from "underscore";
import slugg from "slugg";
import { countLines } from "metabase/lib/string";
import { humanize } from "metabase/lib/formatting";
import Utils from "metabase/lib/utils";
import {
getEngineNativeAceMode,
getEngineNativeType,
getEngineNativeRequiresTable,
} from "metabase/lib/engine";
import {
Card,
DatasetQuery,
......@@ -19,8 +14,8 @@ import {
} from "metabase-types/types/Card";
import {
DependentMetadataItem,
TemplateTags,
TemplateTag,
TemplateTags,
} from "metabase-types/types/Query";
import { DatabaseEngine, DatabaseId } from "metabase-types/types/Database";
import Question from "metabase-lib/lib/Question";
......@@ -31,7 +26,7 @@ import Variable from "metabase-lib/lib/variables/Variable";
import TemplateTagVariable from "metabase-lib/lib/variables/TemplateTagVariable";
import { createTemplateTag } from "metabase-lib/lib/queries/TemplateTag";
import ValidationError from "metabase-lib/lib/ValidationError";
import Dimension, { TemplateTagDimension, FieldDimension } from "../Dimension";
import Dimension, { FieldDimension, TemplateTagDimension } from "../Dimension";
import DimensionOptions from "../DimensionOptions";
import { getNativeQueryTable } from "./utils/native-query-table";
......@@ -334,25 +329,11 @@ export default class NativeQuery extends AtomicQuery {
return queryText ? countLines(queryText) : 0;
}
/**
* The ACE Editor mode name, e.g. 'ace/mode/json'
*/
aceMode(): string {
return getEngineNativeAceMode(this.engine());
}
/**
* Name used to describe the text written in that mode, e.g. 'JSON'. Used to fill in the blank in 'This question is written in _______'.
*/
nativeQueryLanguage() {
return getEngineNativeType(this.engine()).toUpperCase();
}
/**
* Whether the DB selector should be a DB + Table selector. Mongo needs both DB + Table.
*/
requiresTable() {
return getEngineNativeRequiresTable(this.engine());
return this.engine() === "mongo";
}
templateTagsMap(): TemplateTags {
......
......@@ -17,6 +17,10 @@ export function getEngineNativeType(engine) {
}
}
export function getNativeQueryLanguage(engine) {
return getEngineNativeType(engine).toUpperCase();
}
export function getEngineNativeAceMode(engine) {
switch (engine) {
case "mongo":
......@@ -74,10 +78,6 @@ export function getElevatedEngines() {
];
}
export function getEngineNativeRequiresTable(engine) {
return engine === "mongo";
}
export function getEngineSupportsFirewall(engine) {
return engine !== "googleanalytics";
}
......
import { getEngineNativeAceMode } from "metabase/lib/engine";
describe("getEngineNativeAceMode", () => {
it("should be SQL mode for H2", () => {
expect(getEngineNativeAceMode("h2")).toBe("ace/mode/sql");
});
it("should be JSON for MongoDB", () => {
expect(getEngineNativeAceMode("mongo")).toBe("ace/mode/json");
});
});
......@@ -23,6 +23,7 @@ import { connect } from "react-redux";
import slugg from "slugg";
import { isEventOverElement } from "metabase/lib/dom";
import { getEngineNativeAceMode } from "metabase/lib/engine";
import { SQLBehaviour } from "metabase/lib/ace/sql_behaviour";
import ExplicitSize from "metabase/components/ExplicitSize";
......@@ -142,7 +143,7 @@ class NativeQueryEditor extends Component {
editorElement.classList.add("read-only");
}
const aceMode = query.aceMode();
const aceMode = getEngineNativeAceMode(query.engine());
const session = this._editor.getSession();
if (session.$modeId !== aceMode) {
......
......@@ -6,6 +6,7 @@ import {
DatabaseDataSelector,
SchemaAndTableDataSelector,
} from "metabase/query_builder/components/DataSelector";
import { getNativeQueryLanguage } from "metabase/lib/engine";
const DataSourceSelectorsPropTypes = {
isNativeEditorOpen: PropTypes.bool.isRequired,
......@@ -178,7 +179,7 @@ TableSelector.propTypes = TableSelectorPropTypes;
const Placeholder = ({ query }) => (
<div className="ml2 p2 text-medium">
{t`This question is written in ${query.nativeQueryLanguage()}.`}
{t`This question is written in ${getNativeQueryLanguage(query.engine())}.`}
</div>
);
......
......@@ -78,14 +78,6 @@ describe("NativeQuery", () => {
expect(makeMongoQuery("").supportsNativeParameters()).toBe(false);
});
});
describe("aceMode()", () => {
it("Mongo gets JSON mode ", () => {
expect(makeMongoQuery("").aceMode()).toBe("ace/mode/json");
});
it("H2 gets generic SQL mode in the editor", () => {
expect(query.aceMode()).toBe("ace/mode/sql");
});
});
});
describe("Queries have some helpful status checks", () => {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment