Skip to content

Commit aebcd22

Browse files
authored
feat: Db settings and connections editing (#492)
Signed-off-by: Ilya Boyandin <[email protected]>
1 parent 805882c commit aebcd22

50 files changed

Lines changed: 2102 additions & 290 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/sqlrooms-cli-ui/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"@sqlrooms/canvas": "workspace:*",
1616
"@sqlrooms/cells": "workspace:*",
1717
"@sqlrooms/db": "workspace:*",
18+
"@sqlrooms/db-settings": "workspace:*",
1819
"@sqlrooms/dropzone": "workspace:*",
1920
"@sqlrooms/duckdb": "workspace:*",
2021
"@sqlrooms/layout": "workspace:*",

apps/sqlrooms-cli-ui/src/components/ConnectorDriversDialog.tsx

Lines changed: 0 additions & 171 deletions
This file was deleted.

apps/sqlrooms-cli-ui/src/components/DataSourcesPanel.tsx

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,22 @@
1+
import {DbSettings} from '@sqlrooms/db-settings';
12
import {FileDropzone} from '@sqlrooms/dropzone';
23
import {RoomPanel} from '@sqlrooms/room-shell';
3-
import {TableStructurePanel} from '@sqlrooms/sql-editor';
4-
import {toast} from '@sqlrooms/ui';
4+
import {SchemaExplorer} from '@sqlrooms/sql-editor';
5+
import {
6+
Dialog,
7+
DialogContent,
8+
DialogHeader,
9+
DialogTitle,
10+
DialogTrigger,
11+
Tabs,
12+
TabsContent,
13+
TabsList,
14+
TabsTrigger,
15+
toast,
16+
} from '@sqlrooms/ui';
517
import {convertToValidColumnOrTableName} from '@sqlrooms/utils';
618
import {RoomPanelTypes} from '../layout';
719
import {useRoomStore} from '../store';
8-
import {ConnectorDriversDialog} from './ConnectorDriversDialog';
920

1021
export const DataSourcesPanel = () => {
1122
const connector = useRoomStore((state) => state.db.connector);
@@ -44,11 +55,60 @@ export const DataSourcesPanel = () => {
4455
Files stay on your machine and are loaded into DuckDB locally.
4556
</div>
4657
</FileDropzone>
47-
<div className="flex items-center justify-end px-2 pt-1">
48-
<ConnectorDriversDialog />
49-
</div>
5058

51-
<TableStructurePanel />
59+
<Dialog>
60+
<SchemaExplorer>
61+
<SchemaExplorer.Header>
62+
<DialogTrigger asChild>
63+
<DbSettings.TriggerButton />
64+
</DialogTrigger>
65+
<SchemaExplorer.RefreshButton />
66+
</SchemaExplorer.Header>
67+
<SchemaExplorer.Tree className="h-full" />
68+
</SchemaExplorer>
69+
70+
<DialogContent className="flex max-h-[80vh] max-w-2xl flex-col">
71+
<DialogHeader>
72+
<DialogTitle>Database Settings</DialogTitle>
73+
</DialogHeader>
74+
<Tabs
75+
defaultValue="connections"
76+
className="flex min-h-0 w-full flex-col"
77+
>
78+
<TabsList className="w-full shrink-0">
79+
<TabsTrigger value="connections" className="flex-1">
80+
Connections
81+
</TabsTrigger>
82+
<TabsTrigger value="drivers" className="flex-1">
83+
<DbSettings.DriversTabLabel />
84+
</TabsTrigger>
85+
</TabsList>
86+
<div className="mt-4 grid min-h-0 overflow-y-auto [&>*]:col-start-1 [&>*]:row-start-1">
87+
<TabsContent
88+
value="connections"
89+
forceMount
90+
className="space-y-4 data-[state=inactive]:pointer-events-none data-[state=inactive]:invisible"
91+
>
92+
<DbSettings.Connections />
93+
</TabsContent>
94+
<TabsContent
95+
value="drivers"
96+
forceMount
97+
className="data-[state=inactive]:pointer-events-none data-[state=inactive]:invisible"
98+
>
99+
<DbSettings.Diagnostics />
100+
</TabsContent>
101+
</div>
102+
<TabsContent
103+
value="connections"
104+
forceMount
105+
className="flex shrink-0 justify-end pt-4 data-[state=inactive]:pointer-events-none data-[state=inactive]:invisible"
106+
>
107+
<DbSettings.SaveButton />
108+
</TabsContent>
109+
</Tabs>
110+
</DialogContent>
111+
</Dialog>
52112
</RoomPanel>
53113
);
54114
};

apps/sqlrooms-cli-ui/src/runtimeConfig.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export type RuntimeConfig = {
2424
requiresBridge?: boolean;
2525
bridgeId?: string;
2626
isCore?: boolean;
27+
config?: Record<string, string>;
2728
}>;
2829
diagnostics?: Array<{
2930
id: string;
@@ -39,6 +40,17 @@ export type RuntimeConfig = {
3940
uvxWith?: string;
4041
};
4142
}>;
43+
supportedEngines?: string[];
44+
engineConfigFields?: Record<
45+
string,
46+
Array<{
47+
key: string;
48+
label: string;
49+
placeholder?: string;
50+
secret?: boolean;
51+
required?: boolean;
52+
}>
53+
>;
4254
};
4355
};
4456

0 commit comments

Comments
 (0)