diff --git a/app/client/cypress/e2e/Regression/ClientSide/BugTests/DatasourceSchema_spec.ts b/app/client/cypress/e2e/Regression/ClientSide/BugTests/DatasourceSchema_spec.ts index 388d903b24..4fdcf219fd 100644 --- a/app/client/cypress/e2e/Regression/ClientSide/BugTests/DatasourceSchema_spec.ts +++ b/app/client/cypress/e2e/Regression/ClientSide/BugTests/DatasourceSchema_spec.ts @@ -70,4 +70,18 @@ describe("Datasource form related tests", function () { ); }, ); + + // the full list for schema-less plugins can be found here. https://www.notion.so/appsmith/Don-t-show-schema-section-for-plugins-that-don-t-support-it-78f82b6abf7948c5a7d596ae583ed8a4?pvs=4#3862343ca2564f7e83a2c8279965ca61 + it("4. Verify schema does not show up in schema-less plugins", () => { + featureFlagIntercept( + { + ab_ds_schema_enabled: true, + }, + false, + ); + agHelper.RefreshPage(); + dataSources.CreateDataSource("Redis", true, false); + dataSources.CreateQueryAfterDSSaved(); + dataSources.VerifySchemaAbsenceInQueryEditor(); + }); }); diff --git a/app/client/cypress/support/Pages/DataSources.ts b/app/client/cypress/support/Pages/DataSources.ts index 6c41d7f888..bb123644c6 100644 --- a/app/client/cypress/support/Pages/DataSources.ts +++ b/app/client/cypress/support/Pages/DataSources.ts @@ -233,6 +233,7 @@ export class DataSources { private _reconnectModalDSToopTipIcon = ".t--ds-list .ads-v2-icon"; private _datasourceTableSchemaInQueryEditor = ".datasourceStructure-query-editor"; + private _datasourceStructureHeader = ".datasourceStructure-header"; private _datasourceColumnSchemaInQueryEditor = ".t--datasource-column"; private _datasourceStructureSearchInput = ".datasourceStructure-search input"; @@ -1262,6 +1263,10 @@ export class DataSources { .contains(schema); } + public VerifySchemaAbsenceInQueryEditor() { + this.agHelper.AssertElementAbsence(this._datasourceStructureHeader); + } + public VerifyColumnSchemaOnQueryEditor(schema: string, index = 0) { this.agHelper .GetElement(this._datasourceColumnSchemaInQueryEditor) diff --git a/app/client/src/components/editorComponents/ActionRightPane/index.tsx b/app/client/src/components/editorComponents/ActionRightPane/index.tsx index 59c43d5320..e9fadc09ba 100644 --- a/app/client/src/components/editorComponents/ActionRightPane/index.tsx +++ b/app/client/src/components/editorComponents/ActionRightPane/index.tsx @@ -36,7 +36,10 @@ import { import { builderURL } from "RouteBuilder"; import { hasManagePagePermission } from "@appsmith/utils/permissionHelpers"; import DatasourceStructureHeader from "pages/Editor/Explorer/Datasources/DatasourceStructureHeader"; -import { DatasourceStructureContainer as DataStructureList } from "pages/Editor/Explorer/Datasources/DatasourceStructureContainer"; +import { + DatasourceStructureContainer as DataStructureList, + SCHEMALESS_PLUGINS, +} from "pages/Editor/Explorer/Datasources/DatasourceStructureContainer"; import { DatasourceStructureContext } from "pages/Editor/Explorer/Datasources/DatasourceStructureContainer"; import { selectFeatureFlagCheck } from "@appsmith/selectors/featureFlagsSelectors"; import { @@ -56,7 +59,6 @@ import { isUserSignedUpFlagSet, setFeatureFlagShownStatus, } from "utils/storage"; -import { PluginName } from "entities/Action"; import { getCurrentUser } from "selectors/usersSelectors"; import { Tooltip } from "design-system"; import { ASSETS_CDN_URL } from "constants/ThirdPartyConstants"; @@ -414,7 +416,7 @@ function ActionSidebar({ const showSchema = isEnabledForDSSchema && pluginDatasourceForm !== DatasourceComponentTypes.RestAPIDatasourceForm && - pluginName !== PluginName.SMTP; + !SCHEMALESS_PLUGINS.includes(pluginName); useEffect(() => { if (showSchema) { diff --git a/app/client/src/entities/Action/index.ts b/app/client/src/entities/Action/index.ts index faef9e3fb9..18ea8f72bb 100644 --- a/app/client/src/entities/Action/index.ts +++ b/app/client/src/entities/Action/index.ts @@ -41,6 +41,13 @@ export enum PluginName { ARANGODB = "ArangoDB", REDSHIFT = "Redshift", SMTP = "SMTP", + REST_API = "REST API", + REDIS = "Redis", + AIRTABLE = "Airtable", + TWILIO = "Twilio", + HUBSPOT = "HubSpot", + ELASTIC_SEARCH = "Elasticsearch", + GRAPHQL = "Authenticated GraphQL API", } export enum PaginationType { diff --git a/app/client/src/pages/Editor/Explorer/Datasources/DatasourceStructureContainer.tsx b/app/client/src/pages/Editor/Explorer/Datasources/DatasourceStructureContainer.tsx index 9a69b4cbe4..a31d194317 100644 --- a/app/client/src/pages/Editor/Explorer/Datasources/DatasourceStructureContainer.tsx +++ b/app/client/src/pages/Editor/Explorer/Datasources/DatasourceStructureContainer.tsx @@ -20,6 +20,7 @@ import type { AppState } from "@appsmith/reducers"; import DatasourceStructureLoadingContainer from "./DatasourceStructureLoadingContainer"; import DatasourceStructureNotFound from "./DatasourceStructureNotFound"; import AnalyticsUtil from "utils/AnalyticsUtil"; +import { PluginName } from "entities/Action"; type Props = { datasourceId: string; @@ -37,6 +38,19 @@ export enum DatasourceStructureContext { API_EDITOR = "api-editor", } +// leaving out DynamoDB and Firestore because they have a schema but not templates +export const SCHEMALESS_PLUGINS: Array = [ + PluginName.SMTP, + PluginName.TWILIO, + PluginName.HUBSPOT, + PluginName.ELASTIC_SEARCH, + PluginName.AIRTABLE, + PluginName.GRAPHQL, + PluginName.REST_API, + PluginName.REDIS, + PluginName.GOOGLE_SHEETS, +]; + const DatasourceStructureSearchContainer = styled.div` margin-bottom: 8px; position: sticky; diff --git a/app/client/src/pages/Editor/Explorer/Datasources/DatasourceStructureHeader.tsx b/app/client/src/pages/Editor/Explorer/Datasources/DatasourceStructureHeader.tsx index bc3fa6d089..b1ecca83c9 100644 --- a/app/client/src/pages/Editor/Explorer/Datasources/DatasourceStructureHeader.tsx +++ b/app/client/src/pages/Editor/Explorer/Datasources/DatasourceStructureHeader.tsx @@ -34,7 +34,7 @@ export default function DatasourceStructureHeader(props: Props) { ); return ( - + {createMessage(SCHEMA_LABEL)} diff --git a/app/client/src/pages/Editor/Explorer/Entity/Placeholder.tsx b/app/client/src/pages/Editor/Explorer/Entity/Placeholder.tsx index f2b96e0ce1..aedf8e6412 100644 --- a/app/client/src/pages/Editor/Explorer/Entity/Placeholder.tsx +++ b/app/client/src/pages/Editor/Explorer/Entity/Placeholder.tsx @@ -10,6 +10,8 @@ const Wrapper = styled.div<{ step: number }>` display: flex; justify-content: flex-start; align-items: center; + word-wrap: break-word; + width: 100%; `; export function EntityPlaceholder(props: {