beyondcode/laravel-er-diagram-generator

can you add mongodb support please ?

fadighattas100 opened this issue · 0 comments

please can you do somethings like

use Doctrine\DBAL\Schema\Column;

class GraphBuilder
{
     protected function getTableColumnsFromModel(string $model)
    {
        try {

            $model = app($model);

            switch ($model->getConnectionName()) {

                case 'mongodb':

                    if (method_exists($model, 'columns')) {
                        $columns = $model::columns();
                        $colloction = new Collection();
                        foreach ($columns as $column => $type) {
                            $column = new Column($column, $type);
                            $colloction->push($column);
                        }

                        return $colloction->toArray();
                    }
                    return [];
                default:
                    $table = $model->getConnection()->getTablePrefix().$model->getTable();
                    $schema = $model->getConnection()->getDoctrineSchemaManager($table);
                    $databasePlatform = $schema->getDatabasePlatform();
                    $databasePlatform->registerDoctrineTypeMapping('enum', 'string');

                    $database = null;

                    if (strpos($table, '.')) {
                        list($database, $table) = explode('.', $table);
                    }

                    return $schema->listTableColumns($table, $database);
            }
        } catch (\Exception $e) {

        }

        return [];
    }
}

and in the mongo model

/**
     * @return array|bool
     */
    protected static function columns()
    {
        try {
            return [
                'id' => Type::getType(Type::BIGINT),
                'component_type_id' => Type::getType(Type::BIGINT),
                'labels' => Type::getType(Type::TARRAY),
                'visualization_type' => Type::getType(Type::STRING),
                'created_at' => Type::getType(Type::DATETIMETZ),
                'data' => Type::getType(Type::JSON),
            ];
        } catch (\Exception $e) {
            if (config('app.debug')) {
                dd($e);
            }
            return false;
        }
    }