From 292c2e5bb7464e2557ca70f3a3ffe4111bc00620 Mon Sep 17 00:00:00 2001
From: Paul Rosenzweig <paulrosenzweig@users.noreply.github.com>
Date: Mon, 9 Mar 2020 12:40:02 -0400
Subject: [PATCH] Avoid calling /database/:id/metadata in BrowseApp (#12052)

---
 .../src/metabase/components/BrowseApp.jsx     | 78 +++++++++++--------
 1 file changed, 44 insertions(+), 34 deletions(-)

diff --git a/frontend/src/metabase/components/BrowseApp.jsx b/frontend/src/metabase/components/BrowseApp.jsx
index 43cd70e561d..c17c3948f75 100644
--- a/frontend/src/metabase/components/BrowseApp.jsx
+++ b/frontend/src/metabase/components/BrowseApp.jsx
@@ -32,7 +32,14 @@ export class SchemaBrowser extends React.Component {
       <Box>
         <Schema.ListLoader query={{ dbId }}>
           {({ schemas }) =>
-            schemas.length > 1 ? (
+            schemas.length === 1 ? (
+              <TableBrowser
+                {...this.props}
+                params={{ ...this.props.params, schemaName: schemas[0].name }}
+                // hide the schema since there's only one
+                showSchemaInHeader={false}
+              />
+            ) : (
               <Box>
                 <BrowseHeader
                   crumbs={[
@@ -40,39 +47,41 @@ export class SchemaBrowser extends React.Component {
                     { title: <Database.Name id={dbId} /> },
                   ]}
                 />
-                <Grid>
-                  {schemas.map(schema => (
-                    <GridItem w={ITEM_WIDTHS} key={schema.id}>
-                      <Link
-                        to={`/browse/${dbId}/schema/${schema.name}`}
-                        mb={1}
-                        hover={{ color: color("accent2") }}
-                        data-metabase-event={`${ANALYTICS_CONTEXT};Schema Click`}
-                        className="overflow-hidden"
-                      >
-                        <Card hoverable px={1}>
-                          <Flex align="center">
-                            <EntityItem
-                              name={schema.name}
-                              iconName="folder"
-                              iconColor={color("accent2")}
-                              item={schema}
-                            />
-                            <Box ml="auto">
-                              <Icon name="reference" />
-                              <Tooltip tooltip={t`X-ray this schema`}>
-                                <Icon name="bolt" mx={1} />
-                              </Tooltip>
-                            </Box>
-                          </Flex>
-                        </Card>
-                      </Link>
-                    </GridItem>
-                  ))}
-                </Grid>
+                {schemas.length === 0 ? (
+                  <h2 className="full text-centered text-medium">{t`This database doesn't have any tables.`}</h2>
+                ) : (
+                  <Grid>
+                    {schemas.map(schema => (
+                      <GridItem w={ITEM_WIDTHS} key={schema.id}>
+                        <Link
+                          to={`/browse/${dbId}/schema/${schema.name}`}
+                          mb={1}
+                          hover={{ color: color("accent2") }}
+                          data-metabase-event={`${ANALYTICS_CONTEXT};Schema Click`}
+                          className="overflow-hidden"
+                        >
+                          <Card hoverable px={1}>
+                            <Flex align="center">
+                              <EntityItem
+                                name={schema.name}
+                                iconName="folder"
+                                iconColor={color("accent2")}
+                                item={schema}
+                              />
+                              <Box ml="auto">
+                                <Icon name="reference" />
+                                <Tooltip tooltip={t`X-ray this schema`}>
+                                  <Icon name="bolt" mx={1} />
+                                </Tooltip>
+                              </Box>
+                            </Flex>
+                          </Card>
+                        </Link>
+                      </GridItem>
+                    ))}
+                  </Grid>
+                )}
               </Box>
-            ) : (
-              <TableBrowser {...this.props} />
             )
           }
         </Schema.ListLoader>
@@ -90,6 +99,7 @@ export class TableBrowser extends React.Component {
     const {
       metadata,
       params: { dbId, schemaName },
+      showSchemaInHeader = true,
     } = this.props;
     return (
       <Box>
@@ -104,7 +114,7 @@ export class TableBrowser extends React.Component {
                       title: <Database.Name id={dbId} />,
                       to: `browse/${dbId}`,
                     },
-                    schemaName != null && { title: schemaName },
+                    showSchemaInHeader && { title: schemaName },
                   ]}
                 />
                 <Grid>
-- 
GitLab