public getTreeItem()

in gui/extension/src/tree-providers/ConnectionsTreeProvider/ConnectionsTreeProvider.ts [187:337]


    public getTreeItem(entry: ConnectionDataModelEntry): TreeItem {
        switch (entry.type) {
            case CdmEntityType.Connection: {
                if (entry.details.dbType === DBType.MySQL) {
                    return new ConnectionMySQLTreeItem(entry);
                }

                return new ConnectionSqliteTreeItem(entry);
            }

            case CdmEntityType.Admin: {
                return new AdminTreeItem(entry);
            }

            case CdmEntityType.AdminPage: {
                const icon = ConnectionsTreeDataProvider.#adminPageTypeToIcon.get(entry.pageType) ?? "";

                return new AdminSectionTreeItem(entry, icon, false, entry.command);
            }

            case CdmEntityType.MrsRoot: {
                return new MrsTreeItem(entry, true, entry.serviceEnabled);
            }

            case CdmEntityType.Schema: {
                const details = entry.connection.details;
                const isCurrent = entry.caption === entry.parent.currentSchema;
                if (details.dbType === DBType.MySQL) {
                    return new SchemaMySQLTreeItem(entry, isCurrent);
                }

                return new SchemaSqliteTreeItem(entry, isCurrent);
            }

            case CdmEntityType.SchemaGroup: {
                return new SchemaGroupTreeItem(entry);
            }

            case CdmEntityType.Table: {
                const details = entry.connection.details;
                if (details.dbType === DBType.MySQL) {
                    return new SchemaTableMySQLTreeItem(entry);
                }

                return new SchemaTableSqliteTreeItem(entry);
            }

            case CdmEntityType.TableGroup: {
                return new SchemaTableGroupTreeItem(entry);
            }

            case CdmEntityType.Column: {
                return new SchemaTableColumnTreeItem(entry);
            }

            case CdmEntityType.Index: {
                return new SchemaTableIndexTreeItem(entry);
            }

            case CdmEntityType.ForeignKey: {
                return new SchemaTableForeignKeyTreeItem(entry);
            }

            case CdmEntityType.Trigger: {
                return new SchemaTableTriggerTreeItem(entry);
            }

            case CdmEntityType.View: {
                const details = entry.connection.details;
                if (details.dbType === DBType.MySQL) {
                    return new SchemaViewMySQLTreeItem(entry);
                }

                return new SchemaViewSqliteTreeItem(entry);
            }

            case CdmEntityType.StoredProcedure: {
                const details = entry.connection.details;
                if (details.dbType === DBType.MySQL) {
                    return new SchemaRoutineMySQLTreeItem(entry);
                }

                return new SchemaRoutineTreeItem(entry);
            }

            case CdmEntityType.StoredFunction: {
                const details = entry.connection.details;
                if (details.dbType === DBType.MySQL) {
                    return new SchemaRoutineMySQLTreeItem(entry);
                }

                return new SchemaRoutineTreeItem(entry);
            }

            case CdmEntityType.Event: {
                return new SchemaEventTreeItem(entry);
            }

            case CdmEntityType.MrsService: {
                return new MrsServiceTreeItem(entry);
            }

            case CdmEntityType.MrsRouterGroup: {
                return new MrsRouterGroupTreeItem(entry);
            }

            case CdmEntityType.MrsRouter: {
                return new MrsRouterTreeItem(entry);
            }

            case CdmEntityType.MrsSchema: {
                return new MrsSchemaTreeItem(entry);
            }

            case CdmEntityType.MrsContentSet: {
                return new MrsContentSetTreeItem(entry);
            }

            case CdmEntityType.MrsUser: {
                return new MrsUserTreeItem(entry);
            }

            case CdmEntityType.MrsAuthAppGroup: {
                return new MrsAuthAppGroupTreeItem(entry);
            }

            case CdmEntityType.MrsAuthApp: {
                return new MrsAuthAppTreeItem(entry);
            }

            case CdmEntityType.MrsServiceAuthApp: {
                return new MrsServiceAuthAppTreeItem(entry);
            }

            case CdmEntityType.MrsContentFile: {
                return new MrsContentFileTreeItem(entry);
            }

            case CdmEntityType.MrsDbObject: {
                return new MrsDbObjectTreeItem(entry);
            }

            case CdmEntityType.MrsRouterService: {
                return new MrsRouterServiceTreeItem(entry);
            }

            default: {
                return new TreeItem("Invalid entry type");
            }
        }
    }