From 25c3050f30cca0309a011e39d15d4350889f05cf Mon Sep 17 00:00:00 2001
From: Alexander Polyankin <alexander.polyankin@metabase.com>
Date: Thu, 13 Oct 2022 14:32:06 +0300
Subject: [PATCH] Move saved-questions to metabase-lib (#25903)

---
 frontend/src/metabase-lib/lib/Question.ts             |  2 +-
 frontend/src/metabase-lib/lib/metadata/Table.ts       |  2 +-
 .../src/metabase-lib/lib/metadata/utils/fields.ts     |  2 +-
 .../src/metabase-lib/lib/metadata/utils/models.ts     |  2 +-
 .../lib/metadata/utils}/saved-questions.js            |  0
 .../lib/metadata/utils}/saved-questions.unit.spec.js  |  0
 .../src/metabase-lib/lib/queries/StructuredQuery.ts   |  2 +-
 .../lib/queries/utils/nested-card-query-table.ts      |  2 +-
 .../lib/queries/utils/structured-query-table.ts       |  2 +-
 .../components/database/MetadataTablePicker.jsx       |  2 +-
 .../permissions/selectors/data-permissions/diff.ts    |  2 +-
 .../browse/components/TableBrowser/TableBrowser.jsx   |  8 ++++----
 .../browse/containers/TableBrowser/TableBrowser.jsx   |  2 +-
 .../TableInfoPopover/TableInfoPopover.tsx             |  2 +-
 frontend/src/metabase/entities/schemas.js             |  8 ++++----
 frontend/src/metabase/entities/tables.js              |  5 ++---
 frontend/src/metabase/lib/saved-questions/index.js    |  1 -
 frontend/src/metabase/lib/urls/browse.ts              |  2 +-
 .../ModelUsageDetails/ModelUsageDetails.tsx           |  3 +--
 .../components/DataSelector/DataSelector.jsx          | 11 +++++------
 .../components/DataSelector/data-search/utils.js      |  2 +-
 .../saved-question-picker/SavedQuestionList.jsx       |  2 +-
 .../MappedFieldPicker/MappedFieldPicker.tsx           |  2 +-
 .../components/view/QuestionDataSource.jsx            |  8 ++++----
 frontend/src/metabase/schema.js                       |  2 +-
 frontend/src/metabase/selectors/metadata.js           |  2 +-
 .../components/ObjectDetail/ObjectDetail.tsx          |  2 +-
 frontend/test/metabase/entities/schemas.unit.spec.js  |  2 +-
 frontend/test/metabase/entities/tables.unit.spec.js   |  2 +-
 .../metabase/scenarios/onboarding/urls.cy.spec.js     |  2 +-
 30 files changed, 41 insertions(+), 45 deletions(-)
 rename frontend/src/{metabase/lib/saved-questions => metabase-lib/lib/metadata/utils}/saved-questions.js (100%)
 rename frontend/src/{metabase/lib/saved-questions => metabase-lib/lib/metadata/utils}/saved-questions.unit.spec.js (100%)
 delete mode 100644 frontend/src/metabase/lib/saved-questions/index.js

diff --git a/frontend/src/metabase-lib/lib/Question.ts b/frontend/src/metabase-lib/lib/Question.ts
index e2785b255e9..21df1eb0bad 100644
--- a/frontend/src/metabase-lib/lib/Question.ts
+++ b/frontend/src/metabase-lib/lib/Question.ts
@@ -62,7 +62,7 @@ import { DependentMetadataItem } from "metabase-types/types/Query";
 import { utf8_to_b64url } from "metabase/lib/encoding";
 import { CollectionId } from "metabase-types/api";
 
-import { getQuestionVirtualTableId } from "metabase/lib/saved-questions/saved-questions";
+import { getQuestionVirtualTableId } from "metabase-lib/lib/metadata/utils/saved-questions";
 import {
   aggregate,
   breakout,
diff --git a/frontend/src/metabase-lib/lib/metadata/Table.ts b/frontend/src/metabase-lib/lib/metadata/Table.ts
index 86bdbb0834d..8dff3cc2956 100644
--- a/frontend/src/metabase-lib/lib/metadata/Table.ts
+++ b/frontend/src/metabase-lib/lib/metadata/Table.ts
@@ -5,7 +5,7 @@
 import Question from "../Question"; // eslint-disable-line import/order
 import { singularize } from "metabase/lib/formatting";
 import type { TableId } from "metabase-types/types/Table";
-import { isVirtualCardId } from "metabase/lib/saved-questions/saved-questions";
+import { isVirtualCardId } from "metabase-lib/lib/metadata/utils/saved-questions";
 import { getAggregationOperators } from "metabase-lib/lib/operators/utils";
 import { createLookupByProperty, memoizeClass } from "metabase-lib/lib/utils";
 import Base from "./Base";
diff --git a/frontend/src/metabase-lib/lib/metadata/utils/fields.ts b/frontend/src/metabase-lib/lib/metadata/utils/fields.ts
index 79af47b4324..5337568626d 100644
--- a/frontend/src/metabase-lib/lib/metadata/utils/fields.ts
+++ b/frontend/src/metabase-lib/lib/metadata/utils/fields.ts
@@ -1,4 +1,4 @@
-import { isVirtualCardId } from "metabase/lib/saved-questions/saved-questions";
+import { isVirtualCardId } from "metabase-lib/lib/metadata/utils/saved-questions";
 import type Field from "../Field";
 
 export function getUniqueFieldId(field: Field): number | string {
diff --git a/frontend/src/metabase-lib/lib/metadata/utils/models.ts b/frontend/src/metabase-lib/lib/metadata/utils/models.ts
index f543647959f..1e2ae24e2a3 100644
--- a/frontend/src/metabase-lib/lib/metadata/utils/models.ts
+++ b/frontend/src/metabase-lib/lib/metadata/utils/models.ts
@@ -5,7 +5,7 @@ import {
   CardId,
   StructuredDatasetQuery,
 } from "metabase-types/types/Card";
-import { getQuestionVirtualTableId } from "metabase/lib/saved-questions";
+import { getQuestionVirtualTableId } from "metabase-lib/lib/metadata/utils/saved-questions";
 import Database from "metabase-lib/lib/metadata/Database";
 import Question from "metabase-lib/lib/Question";
 import NativeQuery from "metabase-lib/lib/queries/NativeQuery";
diff --git a/frontend/src/metabase/lib/saved-questions/saved-questions.js b/frontend/src/metabase-lib/lib/metadata/utils/saved-questions.js
similarity index 100%
rename from frontend/src/metabase/lib/saved-questions/saved-questions.js
rename to frontend/src/metabase-lib/lib/metadata/utils/saved-questions.js
diff --git a/frontend/src/metabase/lib/saved-questions/saved-questions.unit.spec.js b/frontend/src/metabase-lib/lib/metadata/utils/saved-questions.unit.spec.js
similarity index 100%
rename from frontend/src/metabase/lib/saved-questions/saved-questions.unit.spec.js
rename to frontend/src/metabase-lib/lib/metadata/utils/saved-questions.unit.spec.js
diff --git a/frontend/src/metabase-lib/lib/queries/StructuredQuery.ts b/frontend/src/metabase-lib/lib/queries/StructuredQuery.ts
index d70340c90c3..0a408b5cab9 100644
--- a/frontend/src/metabase-lib/lib/queries/StructuredQuery.ts
+++ b/frontend/src/metabase-lib/lib/queries/StructuredQuery.ts
@@ -30,7 +30,7 @@ import { Column } from "metabase-types/types/Dataset";
 import {
   isVirtualCardId,
   getQuestionIdFromVirtualTableId,
-} from "metabase/lib/saved-questions";
+} from "metabase-lib/lib/metadata/utils/saved-questions";
 import { isCompatibleAggregationOperatorForField } from "metabase-lib/lib/operators/utils";
 import { TYPE } from "metabase-lib/lib/types/constants";
 import { fieldRefForColumn } from "metabase-lib/lib/queries/utils/dataset";
diff --git a/frontend/src/metabase-lib/lib/queries/utils/nested-card-query-table.ts b/frontend/src/metabase-lib/lib/queries/utils/nested-card-query-table.ts
index ed99a354551..bc41b691894 100644
--- a/frontend/src/metabase-lib/lib/queries/utils/nested-card-query-table.ts
+++ b/frontend/src/metabase-lib/lib/queries/utils/nested-card-query-table.ts
@@ -1,7 +1,7 @@
 import {
   getQuestionIdFromVirtualTableId,
   getQuestionVirtualTableId,
-} from "metabase/lib/saved-questions";
+} from "metabase-lib/lib/metadata/utils/saved-questions";
 import type Table from "metabase-lib/lib/metadata/Table";
 import type Question from "metabase-lib/lib/Question";
 import type StructuredQuery from "../StructuredQuery";
diff --git a/frontend/src/metabase-lib/lib/queries/utils/structured-query-table.ts b/frontend/src/metabase-lib/lib/queries/utils/structured-query-table.ts
index d53a72aab31..de6a0821025 100644
--- a/frontend/src/metabase-lib/lib/queries/utils/structured-query-table.ts
+++ b/frontend/src/metabase-lib/lib/queries/utils/structured-query-table.ts
@@ -1,5 +1,5 @@
 import type { Field as FieldRef } from "metabase-types/types/Query";
-import { isVirtualCardId } from "metabase/lib/saved-questions";
+import { isVirtualCardId } from "metabase-lib/lib/metadata/utils/saved-questions";
 import type Field from "metabase-lib/lib/metadata/Field";
 import type Table from "metabase-lib/lib/metadata/Table";
 
diff --git a/frontend/src/metabase/admin/datamodel/components/database/MetadataTablePicker.jsx b/frontend/src/metabase/admin/datamodel/components/database/MetadataTablePicker.jsx
index 9dfbf138cba..0df444f6fb0 100644
--- a/frontend/src/metabase/admin/datamodel/components/database/MetadataTablePicker.jsx
+++ b/frontend/src/metabase/admin/datamodel/components/database/MetadataTablePicker.jsx
@@ -5,8 +5,8 @@ import _ from "underscore";
 import Databases from "metabase/entities/databases";
 import Tables from "metabase/entities/tables";
 import { isSyncInProgress } from "metabase/lib/syncing";
-import { SAVED_QUESTIONS_VIRTUAL_DB_ID } from "metabase/lib/saved-questions";
 import { PLUGIN_FEATURE_LEVEL_PERMISSIONS } from "metabase/plugins";
+import { SAVED_QUESTIONS_VIRTUAL_DB_ID } from "metabase-lib/lib/metadata/utils/saved-questions";
 import MetadataTableList from "./MetadataTableList";
 import MetadataSchemaList from "./MetadataSchemaList";
 
diff --git a/frontend/src/metabase/admin/permissions/selectors/data-permissions/diff.ts b/frontend/src/metabase/admin/permissions/selectors/data-permissions/diff.ts
index d19a50ff232..43be8c08a29 100644
--- a/frontend/src/metabase/admin/permissions/selectors/data-permissions/diff.ts
+++ b/frontend/src/metabase/admin/permissions/selectors/data-permissions/diff.ts
@@ -3,8 +3,8 @@ import _ from "underscore";
 import { State } from "metabase-types/store";
 import Groups from "metabase/entities/groups";
 import { diffDataPermissions } from "metabase/admin/permissions/utils/graph";
-import { isVirtualCardId } from "metabase/lib/saved-questions/saved-questions";
 import { Group } from "metabase-types/api";
+import { isVirtualCardId } from "metabase-lib/lib/metadata/utils/saved-questions";
 
 const getDatabasesWithTables = createSelector(
   (state: State) => state.entities.databases,
diff --git a/frontend/src/metabase/browse/components/TableBrowser/TableBrowser.jsx b/frontend/src/metabase/browse/components/TableBrowser/TableBrowser.jsx
index 4882c88702b..7f81060550b 100644
--- a/frontend/src/metabase/browse/components/TableBrowser/TableBrowser.jsx
+++ b/frontend/src/metabase/browse/components/TableBrowser/TableBrowser.jsx
@@ -4,14 +4,14 @@ import { t } from "ttag";
 import { color } from "metabase/lib/colors";
 import * as Urls from "metabase/lib/urls";
 import { isSyncInProgress } from "metabase/lib/syncing";
-import {
-  isVirtualCardId,
-  SAVED_QUESTIONS_VIRTUAL_DB_ID,
-} from "metabase/lib/saved-questions";
 import Database from "metabase/entities/databases";
 import EntityItem from "metabase/components/EntityItem";
 import Icon from "metabase/components/Icon";
 import { Grid } from "metabase/components/Grid";
+import {
+  isVirtualCardId,
+  SAVED_QUESTIONS_VIRTUAL_DB_ID,
+} from "metabase-lib/lib/metadata/utils/saved-questions";
 
 import { ANALYTICS_CONTEXT } from "../../constants";
 import BrowseHeader from "../BrowseHeader";
diff --git a/frontend/src/metabase/browse/containers/TableBrowser/TableBrowser.jsx b/frontend/src/metabase/browse/containers/TableBrowser/TableBrowser.jsx
index a3e8ad2f9a9..f0e99bffb52 100644
--- a/frontend/src/metabase/browse/containers/TableBrowser/TableBrowser.jsx
+++ b/frontend/src/metabase/browse/containers/TableBrowser/TableBrowser.jsx
@@ -2,11 +2,11 @@ import { connect } from "react-redux";
 import _ from "underscore";
 import * as Urls from "metabase/lib/urls";
 import { isSyncInProgress } from "metabase/lib/syncing";
-import { SAVED_QUESTIONS_VIRTUAL_DB_ID } from "metabase/lib/saved-questions";
 import Databases from "metabase/entities/databases";
 import Tables from "metabase/entities/tables";
 import { getMetadata } from "metabase/selectors/metadata";
 import { getXraysEnabled } from "metabase/selectors/settings";
+import { SAVED_QUESTIONS_VIRTUAL_DB_ID } from "metabase-lib/lib/metadata/utils/saved-questions";
 import { RELOAD_INTERVAL } from "../../constants";
 import TableBrowser from "../../components/TableBrowser";
 
diff --git a/frontend/src/metabase/components/MetadataInfo/TableInfoPopover/TableInfoPopover.tsx b/frontend/src/metabase/components/MetadataInfo/TableInfoPopover/TableInfoPopover.tsx
index 5c4cbc84dd7..4ac07622ba4 100644
--- a/frontend/src/metabase/components/MetadataInfo/TableInfoPopover/TableInfoPopover.tsx
+++ b/frontend/src/metabase/components/MetadataInfo/TableInfoPopover/TableInfoPopover.tsx
@@ -5,7 +5,7 @@ import PropTypes from "prop-types";
 import TippyPopover, {
   ITippyPopoverProps,
 } from "metabase/components/Popover/TippyPopover";
-import { isVirtualCardId } from "metabase/lib/saved-questions/saved-questions";
+import { isVirtualCardId } from "metabase-lib/lib/metadata/utils/saved-questions";
 
 import { WidthBoundTableInfo } from "./TableInfoPopover.styled";
 
diff --git a/frontend/src/metabase/entities/schemas.js b/frontend/src/metabase/entities/schemas.js
index 26319561196..da98f9c74ce 100644
--- a/frontend/src/metabase/entities/schemas.js
+++ b/frontend/src/metabase/entities/schemas.js
@@ -2,14 +2,14 @@ import { updateIn } from "icepick";
 import { createEntity } from "metabase/lib/entities";
 
 import { GET } from "metabase/lib/api";
-import {
-  getCollectionVirtualSchemaId,
-  getQuestionVirtualTableId,
-} from "metabase/lib/saved-questions";
 import { generateSchemaId, parseSchemaId } from "metabase/lib/schema";
 
 import { SchemaSchema } from "metabase/schema";
 import Questions from "metabase/entities/questions";
+import {
+  getCollectionVirtualSchemaId,
+  getQuestionVirtualTableId,
+} from "metabase-lib/lib/metadata/utils/saved-questions";
 
 // This is a weird entity because we don't have actual schema objects
 
diff --git a/frontend/src/metabase/entities/tables.js b/frontend/src/metabase/entities/tables.js
index b13c446b804..2de9267136b 100644
--- a/frontend/src/metabase/entities/tables.js
+++ b/frontend/src/metabase/entities/tables.js
@@ -23,12 +23,11 @@ import Fields from "metabase/entities/fields";
 import Questions from "metabase/entities/questions";
 
 import { GET, PUT } from "metabase/lib/api";
+import { getMetadata } from "metabase/selectors/metadata";
 import {
   convertSavedQuestionToVirtualTable,
   getQuestionVirtualTableId,
-} from "metabase/lib/saved-questions";
-
-import { getMetadata } from "metabase/selectors/metadata";
+} from "metabase-lib/lib/metadata/utils/saved-questions";
 
 const listTables = GET("/api/table");
 const listTablesForDatabase = async (...args) =>
diff --git a/frontend/src/metabase/lib/saved-questions/index.js b/frontend/src/metabase/lib/saved-questions/index.js
deleted file mode 100644
index d00d97a499b..00000000000
--- a/frontend/src/metabase/lib/saved-questions/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./saved-questions";
diff --git a/frontend/src/metabase/lib/urls/browse.ts b/frontend/src/metabase/lib/urls/browse.ts
index 88206633122..71a45363fa5 100644
--- a/frontend/src/metabase/lib/urls/browse.ts
+++ b/frontend/src/metabase/lib/urls/browse.ts
@@ -1,7 +1,7 @@
 import slugg from "slugg";
 
-import { SAVED_QUESTIONS_VIRTUAL_DB_ID } from "metabase/lib/saved-questions";
 import { Database, Table } from "metabase-types/api";
+import { SAVED_QUESTIONS_VIRTUAL_DB_ID } from "metabase-lib/lib/metadata/utils/saved-questions";
 
 import { appendSlug } from "./utils";
 
diff --git a/frontend/src/metabase/models/components/ModelDetailPage/ModelUsageDetails/ModelUsageDetails.tsx b/frontend/src/metabase/models/components/ModelDetailPage/ModelUsageDetails/ModelUsageDetails.tsx
index ff93ad32afe..ac73220d29e 100644
--- a/frontend/src/metabase/models/components/ModelDetailPage/ModelUsageDetails/ModelUsageDetails.tsx
+++ b/frontend/src/metabase/models/components/ModelDetailPage/ModelUsageDetails/ModelUsageDetails.tsx
@@ -10,11 +10,10 @@ import Questions, {
   getIcon as getQuestionIcon,
 } from "metabase/entities/questions";
 
-import { getQuestionVirtualTableId } from "metabase/lib/saved-questions";
-
 import type { Card } from "metabase-types/api";
 import type { State } from "metabase-types/store";
 import type { Card as LegacyCardType } from "metabase-types/types/Card";
+import { getQuestionVirtualTableId } from "metabase-lib/lib/metadata/utils/saved-questions";
 import type Question from "metabase-lib/lib/Question";
 
 import {
diff --git a/frontend/src/metabase/query_builder/components/DataSelector/DataSelector.jsx b/frontend/src/metabase/query_builder/components/DataSelector/DataSelector.jsx
index f61f2e5e830..b31becd7d27 100644
--- a/frontend/src/metabase/query_builder/components/DataSelector/DataSelector.jsx
+++ b/frontend/src/metabase/query_builder/components/DataSelector/DataSelector.jsx
@@ -5,12 +5,6 @@ import PropTypes from "prop-types";
 import { t } from "ttag";
 import _ from "underscore";
 
-import {
-  isVirtualCardId,
-  getQuestionVirtualTableId,
-  SAVED_QUESTIONS_VIRTUAL_DB_ID,
-} from "metabase/lib/saved-questions";
-
 import EmptyState from "metabase/components/EmptyState";
 import ListSearchField from "metabase/components/ListSearchField";
 import Icon from "metabase/components/Icon";
@@ -29,6 +23,11 @@ import { PLUGIN_MODERATION } from "metabase/plugins";
 
 import { getMetadata } from "metabase/selectors/metadata";
 import { getHasDataAccess } from "metabase/new_query/selectors";
+import {
+  isVirtualCardId,
+  getQuestionVirtualTableId,
+  SAVED_QUESTIONS_VIRTUAL_DB_ID,
+} from "metabase-lib/lib/metadata/utils/saved-questions";
 import {
   SearchResults,
   convertSearchResultToTableLikeItem,
diff --git a/frontend/src/metabase/query_builder/components/DataSelector/data-search/utils.js b/frontend/src/metabase/query_builder/components/DataSelector/data-search/utils.js
index e5268f3eb55..695ca1e42f8 100644
--- a/frontend/src/metabase/query_builder/components/DataSelector/data-search/utils.js
+++ b/frontend/src/metabase/query_builder/components/DataSelector/data-search/utils.js
@@ -1,4 +1,4 @@
-import { getQuestionVirtualTableId } from "metabase/lib/saved-questions";
+import { getQuestionVirtualTableId } from "metabase-lib/lib/metadata/utils/saved-questions";
 
 export function convertSearchResultToTableLikeItem(searchResultItem) {
   // NOTE: in the entire application when we want to use saved questions as tables
diff --git a/frontend/src/metabase/query_builder/components/DataSelector/saved-question-picker/SavedQuestionList.jsx b/frontend/src/metabase/query_builder/components/DataSelector/saved-question-picker/SavedQuestionList.jsx
index 354c1a067f1..b4077863709 100644
--- a/frontend/src/metabase/query_builder/components/DataSelector/saved-question-picker/SavedQuestionList.jsx
+++ b/frontend/src/metabase/query_builder/components/DataSelector/saved-question-picker/SavedQuestionList.jsx
@@ -4,10 +4,10 @@ import PropTypes from "prop-types";
 
 import { PLUGIN_MODERATION } from "metabase/plugins";
 import Schemas from "metabase/entities/schemas";
-import { getCollectionVirtualSchemaId } from "metabase/lib/saved-questions";
 import EmptyState from "metabase/components/EmptyState";
 
 import { PERSONAL_COLLECTIONS } from "metabase/entities/collections";
+import { getCollectionVirtualSchemaId } from "metabase-lib/lib/metadata/utils/saved-questions";
 import {
   SavedQuestionListRoot,
   SavedQuestionListItem,
diff --git a/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetFieldMetadataSidebar/MappedFieldPicker/MappedFieldPicker.tsx b/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetFieldMetadataSidebar/MappedFieldPicker/MappedFieldPicker.tsx
index f8e01fba947..e888ede585f 100644
--- a/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetFieldMetadataSidebar/MappedFieldPicker/MappedFieldPicker.tsx
+++ b/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetFieldMetadataSidebar/MappedFieldPicker/MappedFieldPicker.tsx
@@ -1,10 +1,10 @@
 import React, { useCallback, useRef } from "react";
 import { t } from "ttag";
 
-import { isVirtualCardId } from "metabase/lib/saved-questions";
 import { SchemaTableAndFieldDataSelector } from "metabase/query_builder/components/DataSelector";
 
 import Fields from "metabase/entities/fields";
+import { isVirtualCardId } from "metabase-lib/lib/metadata/utils/saved-questions";
 import Field from "metabase-lib/lib/metadata/Field";
 
 import { StyledSelectButton } from "./MappedFieldPicker.styled";
diff --git a/frontend/src/metabase/query_builder/components/view/QuestionDataSource.jsx b/frontend/src/metabase/query_builder/components/view/QuestionDataSource.jsx
index 1c4ae42299e..6ae9508af4d 100644
--- a/frontend/src/metabase/query_builder/components/view/QuestionDataSource.jsx
+++ b/frontend/src/metabase/query_builder/components/view/QuestionDataSource.jsx
@@ -3,16 +3,16 @@ import { t } from "ttag";
 import PropTypes from "prop-types";
 
 import { color } from "metabase/lib/colors";
-import {
-  isVirtualCardId,
-  getQuestionIdFromVirtualTableId,
-} from "metabase/lib/saved-questions";
 import * as Urls from "metabase/lib/urls";
 import Questions from "metabase/entities/questions";
 
 import Tooltip from "metabase/components/Tooltip";
 
 import TableInfoPopover from "metabase/components/MetadataInfo/TableInfoPopover";
+import {
+  isVirtualCardId,
+  getQuestionIdFromVirtualTableId,
+} from "metabase-lib/lib/metadata/utils/saved-questions";
 
 import { HeadBreadcrumbs } from "./HeaderBreadcrumbs";
 import { TablesDivider } from "./QuestionDataSource.styled";
diff --git a/frontend/src/metabase/schema.js b/frontend/src/metabase/schema.js
index 4e937792b8b..263edf3ceba 100644
--- a/frontend/src/metabase/schema.js
+++ b/frontend/src/metabase/schema.js
@@ -2,7 +2,7 @@
 
 import { schema } from "normalizr";
 import { generateSchemaId, entityTypeForObject } from "metabase/lib/schema";
-import { SAVED_QUESTIONS_VIRTUAL_DB_ID } from "metabase/lib/saved-questions";
+import { SAVED_QUESTIONS_VIRTUAL_DB_ID } from "metabase-lib/lib/metadata/utils/saved-questions";
 import { getUniqueFieldId } from "metabase-lib/lib/metadata/utils/fields";
 
 export const QuestionSchema = new schema.Entity("questions");
diff --git a/frontend/src/metabase/selectors/metadata.js b/frontend/src/metabase/selectors/metadata.js
index 2575ad7ea24..0dbc2e6e258 100644
--- a/frontend/src/metabase/selectors/metadata.js
+++ b/frontend/src/metabase/selectors/metadata.js
@@ -1,7 +1,7 @@
 import { createSelector } from "reselect";
 
 import _ from "underscore";
-import { isVirtualCardId } from "metabase/lib/saved-questions/saved-questions";
+import { isVirtualCardId } from "metabase-lib/lib/metadata/utils/saved-questions";
 import {
   getFieldValues,
   getRemappings,
diff --git a/frontend/src/metabase/visualizations/components/ObjectDetail/ObjectDetail.tsx b/frontend/src/metabase/visualizations/components/ObjectDetail/ObjectDetail.tsx
index ee8a5b2251d..4a7e674cfcd 100644
--- a/frontend/src/metabase/visualizations/components/ObjectDetail/ObjectDetail.tsx
+++ b/frontend/src/metabase/visualizations/components/ObjectDetail/ObjectDetail.tsx
@@ -30,7 +30,7 @@ import {
   getCanZoomNextRow,
 } from "metabase/query_builder/selectors";
 import { columnSettings } from "metabase/visualizations/lib/settings/column";
-import { isVirtualCardId } from "metabase/lib/saved-questions";
+import { isVirtualCardId } from "metabase-lib/lib/metadata/utils/saved-questions";
 import { isPK } from "metabase-lib/lib/types/utils/isa";
 import Table from "metabase-lib/lib/metadata/Table";
 import Question from "metabase-lib/lib/Question";
diff --git a/frontend/test/metabase/entities/schemas.unit.spec.js b/frontend/test/metabase/entities/schemas.unit.spec.js
index 6667e123c21..e0925d208bb 100644
--- a/frontend/test/metabase/entities/schemas.unit.spec.js
+++ b/frontend/test/metabase/entities/schemas.unit.spec.js
@@ -4,7 +4,7 @@ import { getStore } from "__support__/entities-store";
 
 import Schemas from "metabase/entities/schemas";
 import Questions from "metabase/entities/questions";
-import { ROOT_COLLECTION_VIRTUAL_SCHEMA } from "metabase/lib/saved-questions";
+import { ROOT_COLLECTION_VIRTUAL_SCHEMA } from "metabase-lib/lib/metadata/utils/saved-questions";
 
 describe("schema entity", () => {
   let store;
diff --git a/frontend/test/metabase/entities/tables.unit.spec.js b/frontend/test/metabase/entities/tables.unit.spec.js
index 58496f6c554..2884c64e0a4 100644
--- a/frontend/test/metabase/entities/tables.unit.spec.js
+++ b/frontend/test/metabase/entities/tables.unit.spec.js
@@ -1,6 +1,6 @@
 import Tables from "metabase/entities/tables";
 import Questions from "metabase/entities/questions";
-import { convertSavedQuestionToVirtualTable } from "metabase/lib/saved-questions";
+import { convertSavedQuestionToVirtualTable } from "metabase-lib/lib/metadata/utils/saved-questions";
 
 describe("table entity", () => {
   describe("saved questions | reducer", () => {
diff --git a/frontend/test/metabase/scenarios/onboarding/urls.cy.spec.js b/frontend/test/metabase/scenarios/onboarding/urls.cy.spec.js
index 7ac96de99e5..2ae0cecb23c 100644
--- a/frontend/test/metabase/scenarios/onboarding/urls.cy.spec.js
+++ b/frontend/test/metabase/scenarios/onboarding/urls.cy.spec.js
@@ -6,7 +6,7 @@ import {
 } from "__support__/e2e/helpers";
 import { USERS, SAMPLE_DB_ID } from "__support__/e2e/cypress_data";
 
-import { SAVED_QUESTIONS_VIRTUAL_DB_ID } from "metabase/lib/saved-questions";
+import { SAVED_QUESTIONS_VIRTUAL_DB_ID } from "metabase-lib/lib/metadata/utils/saved-questions";
 
 const { admin, normal } = USERS;
 
-- 
GitLab