Skip to content

Commit

Permalink
refactor the extensions driver
Browse files Browse the repository at this point in the history
  • Loading branch information
invisal committed Jan 21, 2025
1 parent 7c9764e commit 1569eed
Show file tree
Hide file tree
Showing 11 changed files with 61 additions and 36 deletions.
4 changes: 2 additions & 2 deletions src/app/(theme)/embed/dolt/page-client.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use client";
import { Studio } from "@/components/gui/studio";
import { StudioExtensionManager } from "@/core/extension-manager";
import { createStandardExtensions } from "@/core/standard-extension";
import { createMySQLExtensions } from "@/core/standard-extension";
import { IframeDoltDriver } from "@/drivers/iframe-driver";
import ElectronSavedDocs from "@/drivers/saved-doc/electron-saved-doc";
import DoltExtension from "@/extensions/dolt";
Expand All @@ -14,7 +14,7 @@ export default function EmbedPageClient() {

const extensions = useMemo(() => {
return new StudioExtensionManager([
...createStandardExtensions(),
...createMySQLExtensions(),
new DoltExtension(),
]);
}, []);
Expand Down
4 changes: 2 additions & 2 deletions src/app/(theme)/embed/mysql/page-client.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use client";
import { Studio } from "@/components/gui/studio";
import { StudioExtensionManager } from "@/core/extension-manager";
import { createStandardExtensions } from "@/core/standard-extension";
import { createMySQLExtensions } from "@/core/standard-extension";
import { IframeMySQLDriver } from "@/drivers/iframe-driver";
import ElectronSavedDocs from "@/drivers/saved-doc/electron-saved-doc";
import { useSearchParams } from "next/navigation";
Expand All @@ -12,7 +12,7 @@ export default function EmbedPageClient() {
const driver = useMemo(() => new IframeMySQLDriver(), []);

const extensions = useMemo(() => {
return new StudioExtensionManager(createStandardExtensions());
return new StudioExtensionManager(createMySQLExtensions());
}, []);

const savedDocDriver = useMemo(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/app/(theme)/embed/postgres/page-client.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use client";
import { Studio } from "@/components/gui/studio";
import { StudioExtensionManager } from "@/core/extension-manager";
import { createStandardExtensions } from "@/core/standard-extension";
import { createPostgreSQLExtensions } from "@/core/standard-extension";
import { IframePostgresDriver } from "@/drivers/iframe-driver";
import ElectronSavedDocs from "@/drivers/saved-doc/electron-saved-doc";
import { useSearchParams } from "next/navigation";
Expand All @@ -12,7 +12,7 @@ export default function EmbedPageClient() {
const driver = useMemo(() => new IframePostgresDriver(), []);

const extensions = useMemo(() => {
return new StudioExtensionManager(createStandardExtensions());
return new StudioExtensionManager(createPostgreSQLExtensions());
}, []);

const savedDocDriver = useMemo(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/app/(theme)/embed/sqlite/page-client.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use client";
import { Studio } from "@/components/gui/studio";
import { StudioExtensionManager } from "@/core/extension-manager";
import { createStandardExtensions } from "@/core/standard-extension";
import { createSQLiteExtensions } from "@/core/standard-extension";
import { IframeSQLiteDriver } from "@/drivers/iframe-driver";
import ElectronSavedDocs from "@/drivers/saved-doc/electron-saved-doc";
import { useSearchParams } from "next/navigation";
Expand All @@ -12,7 +12,7 @@ export default function EmbedPageClient() {
const driver = useMemo(() => new IframeSQLiteDriver(), []);

const extensions = useMemo(() => {
return new StudioExtensionManager(createStandardExtensions());
return new StudioExtensionManager(createSQLiteExtensions());
}, []);

const savedDocDriver = useMemo(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/app/(theme)/embed/starbase/page-client.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use client";
import { Studio } from "@/components/gui/studio";
import { StudioExtensionManager } from "@/core/extension-manager";
import { createStandardExtensions } from "@/core/standard-extension";
import { createSQLiteExtensions } from "@/core/standard-extension";
import { IframeSQLiteDriver } from "@/drivers/iframe-driver";
import ElectronSavedDocs from "@/drivers/saved-doc/electron-saved-doc";
import { useSearchParams } from "next/navigation";
Expand All @@ -21,7 +21,7 @@ export default function EmbedPageClient() {
}, []);

const extensions = useMemo(() => {
return new StudioExtensionManager(createStandardExtensions());
return new StudioExtensionManager(createSQLiteExtensions());
}, []);

useEffect(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/app/(theme)/embed/turso/page-client.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use client";
import { Studio } from "@/components/gui/studio";
import { StudioExtensionManager } from "@/core/extension-manager";
import { createStandardExtensions } from "@/core/standard-extension";
import { createSQLiteExtensions } from "@/core/standard-extension";
import { IframeSQLiteDriver } from "@/drivers/iframe-driver";
import ElectronSavedDocs from "@/drivers/saved-doc/electron-saved-doc";
import { useSearchParams } from "next/navigation";
Expand All @@ -26,7 +26,7 @@ export default function EmbedPageClient() {
}, []);

const extensions = useMemo(() => {
return new StudioExtensionManager(createStandardExtensions());
return new StudioExtensionManager(createSQLiteExtensions());
}, []);

useEffect(() => {
Expand Down
20 changes: 10 additions & 10 deletions src/app/(theme)/playground/client/page-client.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import {
ToolbarSeparator,
} from "@/components/gui/toolbar";
import { StudioExtensionManager } from "@/core/extension-manager";
import { createStandardExtensions } from "@/core/standard-extension";
import { createSQLiteExtensions } from "@/core/standard-extension";

const SQLITE_FILE_EXTENSIONS =
".db,.sdb,.sqlite,.db3,.s3db,.sqlite3,.sl3,.db2,.s2db,.sqlite2,.sl2";
Expand Down Expand Up @@ -249,15 +249,15 @@ export default function PlaygroundEditorBody({
}, [driver, fileName, handler, nativeDriver]);

const extensions = useMemo(() => {
return new StudioExtensionManager(createStandardExtensions());
return new StudioExtensionManager(createSQLiteExtensions());
}, []);

const dom = useMemo(() => {
if (databaseLoading) {
return (
<div className="p-4">
<LucideLoader className="w-12 h-12 animate-spin mb-2" />
<h1 className="text-2xl font-bold mb-2">Loading Database</h1>
<LucideLoader className="mb-2 h-12 w-12 animate-spin" />
<h1 className="mb-2 text-2xl font-bold">Loading Database</h1>
<p>
Please wait. We are downloading:
<br />
Expand Down Expand Up @@ -286,12 +286,12 @@ export default function PlaygroundEditorBody({
<>
<Script src="/sqljs/sql-wasm.js" onReady={onReady} />
<ScreenDropZone onFileDrop={onFileDrop} />
<div className="w-screen h-screen flex flex-col">
<div className="flex h-screen w-screen flex-col">
<div className="border-b p-1">
<Toolbar>
{fileName && (
<div className="text-xs rounded bg-yellow-300 text-black flex gap-1 items-center p-2">
<LucideFile className="w-4 h-4" />
<div className="flex items-center gap-1 rounded bg-yellow-300 p-2 text-xs text-black">
<LucideFile className="h-4 w-4" />
<span>
Editing <strong>{fileName}</strong>
</span>
Expand All @@ -302,22 +302,22 @@ export default function PlaygroundEditorBody({
<ToolbarButton
text="Save"
onClick={onSaveClicked}
icon={<Save className="w-4 h-4" />}
icon={<Save className="h-4 w-4" />}
/>
)}

<ToolbarButton
text="Open"
onClick={onOpenClicked}
icon={<FolderOpenIcon className="w-4 h-4" />}
icon={<FolderOpenIcon className="h-4 w-4" />}
/>

{handler && (
<>
<ToolbarSeparator />
<ToolbarButton
text="Refresh"
icon={<RefreshCcw className="w-4 h-4" />}
icon={<RefreshCcw className="h-4 w-4" />}
onClick={onReloadDatabase}
/>
</>
Expand Down
6 changes: 3 additions & 3 deletions src/app/(theme)/playground/mysql/[roomName]/page-client.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { Studio } from "@/components/gui/studio";
import ServerLoadingAnimation from "@/components/icons/server-loading";
import { StudioExtensionManager } from "@/core/extension-manager";
import { createStandardExtensions } from "@/core/standard-extension";
import { createMySQLExtensions } from "@/core/standard-extension";
import MySQLPlaygroundDriver from "@/drivers/mysql/mysql-playground-driver";
import { useSearchParams } from "next/navigation";
import { useEffect, useMemo, useState } from "react";
Expand All @@ -24,7 +24,7 @@ export default function MySQLPlaygroundPageClient({
}, [setReady, roomName]);

const extensions = useMemo(() => {
return new StudioExtensionManager(createStandardExtensions());
return new StudioExtensionManager(createMySQLExtensions());
}, []);

// Create ping useeffect
Expand All @@ -40,7 +40,7 @@ export default function MySQLPlaygroundPageClient({

if (!isReady) {
return (
<div className="w-screen h-screen flex items-center justify-center flex-col gap-4">
<div className="flex h-screen w-screen flex-col items-center justify-center gap-4">
<ServerLoadingAnimation />
<div>Setting up your database</div>
</div>
Expand Down
13 changes: 6 additions & 7 deletions src/components/gui/schema-sidebar-list.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,6 @@ export default function SchemaList({ search }: Readonly<SchemaListProps>) {
(item?: DatabaseSchemaItem) => {
const selectedName = item?.name;
const isTable = item?.type === "table";
// const isTrigger = item?.type === "trigger";

const createMenuSection = {
title: "Create",
Expand All @@ -156,7 +155,7 @@ export default function SchemaList({ search }: Readonly<SchemaListProps>) {
},
},
...extensions.getResourceCreateMenu(),
],
].filter(Boolean),
};

const modificationSection = item
Expand All @@ -173,7 +172,7 @@ export default function SchemaList({ search }: Readonly<SchemaListProps>) {
}
: undefined,
...extensions.getResourceContextMenu(item, "modification"),
]
].filter(Boolean)
: [];

return [
Expand Down Expand Up @@ -261,10 +260,10 @@ export default function SchemaList({ search }: Readonly<SchemaListProps>) {
});
} else if (item.data.type === "trigger") {
triggerEditorExtensionTab.open({
schemaName: item.data.schemaName ?? '',
name: item.name ?? '',
tableName: item.data.tableName ?? ''
})
schemaName: item.data.schemaName ?? "",
name: item.name ?? "",
tableName: item.data.tableName ?? "",
});
} else if (item.data.type === "schema") {
if (databaseDriver.getFlags().supportUseStatement) {
databaseDriver
Expand Down
18 changes: 16 additions & 2 deletions src/components/my-studio.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@ import { CollaborationBaseDriver } from "@/drivers/collaboration-driver-base";
import { Studio } from "./gui/studio";
import { SavedDocDriver } from "@/drivers/saved-doc/saved-doc-driver";
import { StudioExtensionManager } from "@/core/extension-manager";
import { createStandardExtensions } from "@/core/standard-extension";
import {
createMySQLExtensions,
createPostgreSQLExtensions,
createSQLiteExtensions,
createStandardExtensions,
} from "@/core/standard-extension";

interface MyStudioProps {
name: string;
Expand All @@ -24,14 +29,23 @@ function MyStudioInternal({
collabarator,
}: MyStudioProps) {
const router = useRouter();
const dialet = driver.getFlags().dialect;

const goBack = useCallback(() => {
router.push("/connect");
}, [router]);

const extensions = useMemo(() => {
if (dialet === "mysql") {
return new StudioExtensionManager(createMySQLExtensions());
} else if (dialet === "sqlite") {
return new StudioExtensionManager(createSQLiteExtensions());
} else if (dialet === "postgres") {
return new StudioExtensionManager(createPostgreSQLExtensions());
}

return new StudioExtensionManager(createStandardExtensions());
}, []);
}, [dialet]);

return (
<Studio
Expand Down
16 changes: 14 additions & 2 deletions src/core/standard-extension.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,20 @@

import QueryHistoryConsoleLogExtension from "@/extensions/query-console-log";
import ViewEditorExtension from "@/extensions/view-editor";
import TriggerEditorExtension from '@/extensions/trigger-editor';
import TriggerEditorExtension from "@/extensions/trigger-editor";

export function createStandardExtensions() {
return [new QueryHistoryConsoleLogExtension(), new TriggerEditorExtension(), new ViewEditorExtension()];
return [new QueryHistoryConsoleLogExtension(), new ViewEditorExtension()];
}

export function createSQLiteExtensions() {
return [...createStandardExtensions(), new TriggerEditorExtension()];
}

export function createMySQLExtensions() {
return [...createStandardExtensions(), new TriggerEditorExtension()];
}

export function createPostgreSQLExtensions() {
return createStandardExtensions();
}

0 comments on commit 1569eed

Please sign in to comment.