public function describe()
    {
        $defaultSchema = $this->driver->getDefaultSchema();
        $description = [
            'schemata' => [],
        ];

        $schemata = $this->getSchemata();

        foreach ($schemata as $schema) {
            if ($schema['name'] == $defaultSchema) {
                $description['tables'] = $this->describeTables($defaultSchema);
                $description['views'] = $this->describeViews($defaultSchema);
            } else {
                $description['schemata'][$schema['name']]['name'] = $schema['name'];
                $description['schemata'][$schema['name']]['tables'] = $this->describeTables($schema['name']);
                $description['schemata'][$schema['name']]['views'] = $this->describeViews($schema['name']);
            }
        }

        return $description;
    }