From 424da13dcce849c27cc804792fffaebfa5af6213 Mon Sep 17 00:00:00 2001 From: "Visal .In" Date: Wed, 17 Apr 2024 13:09:17 +0700 Subject: [PATCH] fixing format --- gui/README.md | 220 +++++++++++++++++++++---------------------- gui/src/driver.ts | 18 ++-- gui/src/extension.ts | 12 +-- gui/tsconfig.json | 5 +- 4 files changed, 128 insertions(+), 127 deletions(-) diff --git a/gui/README.md b/gui/README.md index 71f2d2ff..08d89c30 100644 --- a/gui/README.md +++ b/gui/README.md @@ -1,110 +1,110 @@ -## LibSQL Studio GUI - -LibSQL Studio GUI is a standalone database GUI React component for SQLite. - -```typescript -import { Studio } from "@libsqlstudio/gui"; -import TursoDriver from "./driver"; - -export default App() { - const driver = useMemo(() => { - return new TursoDriver("url_here", "token"); - }, []) - - return -} -``` - -Implementing SQLite Driver - -```typescript -// driver.ts -import { - createClient, - Client, - InStatement, - ResultSet, -} from "@libsql/client/web"; -import { - SqliteLikeBaseDriver, - DatabaseHeader, - DatabaseResultSet, - DatabaseRow, - convertSqliteType, -} from "@libsqlstudio/gui/driver"; - -export default class TursoDriver extends SqliteLikeBaseDriver { - protected client: Client; - protected endpoint: string = ""; - protected authToken = ""; - - constructor(url: string, authToken: string) { - super(); - this.endpoint = url; - this.authToken = authToken; - - this.client = createClient({ - url: this.endpoint, - authToken: this.authToken, - }); - } - - supportBigInt(): boolean { - return false; - } - - async query(stmt: InStatement) { - const r = await this.client.execute(stmt); - return transformRawResult(r); - } - - async transaction(stmt: InStatement[]) { - return (await this.client.batch(stmt, "write")).map(transformRawResult); - } -} - -function transformRawResult(raw: ResultSet): DatabaseResultSet { - const headerSet = new Set(); - - const headers: DatabaseHeader[] = raw.columns.map((colName, colIdx) => { - const colType = raw.columnTypes[colIdx]; - let renameColName = colName; - - for (let i = 0; i < 20; i++) { - if (!headerSet.has(renameColName)) break; - renameColName = `__${colName}_${i}`; - } - - headerSet.add(renameColName); - - return { - name: renameColName, - displayName: colName, - originalType: colType, - type: convertSqliteType(colType), - }; - }); - - const rows = raw.rows.map((r) => - headers.reduce((a, b, idx) => { - a[b.name] = r[idx]; - return a; - }, {} as DatabaseRow) - ); - - return { - rows, - rowsAffected: raw.rowsAffected, - headers, - lastInsertRowid: - raw.lastInsertRowid === undefined - ? undefined - : Number(raw.lastInsertRowid), - }; -} -``` +## LibSQL Studio GUI + +LibSQL Studio GUI is a standalone database GUI React component for SQLite. + +```typescript +import { Studio } from "@libsqlstudio/gui"; +import TursoDriver from "./driver"; + +export default App() { + const driver = useMemo(() => { + return new TursoDriver("url_here", "token"); + }, []) + + return +} +``` + +Implementing SQLite Driver + +```typescript +// driver.ts +import { + createClient, + Client, + InStatement, + ResultSet, +} from "@libsql/client/web"; +import { + SqliteLikeBaseDriver, + DatabaseHeader, + DatabaseResultSet, + DatabaseRow, + convertSqliteType, +} from "@libsqlstudio/gui/driver"; + +export default class TursoDriver extends SqliteLikeBaseDriver { + protected client: Client; + protected endpoint: string = ""; + protected authToken = ""; + + constructor(url: string, authToken: string) { + super(); + this.endpoint = url; + this.authToken = authToken; + + this.client = createClient({ + url: this.endpoint, + authToken: this.authToken, + }); + } + + supportBigInt(): boolean { + return false; + } + + async query(stmt: InStatement) { + const r = await this.client.execute(stmt); + return transformRawResult(r); + } + + async transaction(stmt: InStatement[]) { + return (await this.client.batch(stmt, "write")).map(transformRawResult); + } +} + +function transformRawResult(raw: ResultSet): DatabaseResultSet { + const headerSet = new Set(); + + const headers: DatabaseHeader[] = raw.columns.map((colName, colIdx) => { + const colType = raw.columnTypes[colIdx]; + let renameColName = colName; + + for (let i = 0; i < 20; i++) { + if (!headerSet.has(renameColName)) break; + renameColName = `__${colName}_${i}`; + } + + headerSet.add(renameColName); + + return { + name: renameColName, + displayName: colName, + originalType: colType, + type: convertSqliteType(colType), + }; + }); + + const rows = raw.rows.map((r) => + headers.reduce((a, b, idx) => { + a[b.name] = r[idx]; + return a; + }, {} as DatabaseRow) + ); + + return { + rows, + rowsAffected: raw.rowsAffected, + headers, + lastInsertRowid: + raw.lastInsertRowid === undefined + ? undefined + : Number(raw.lastInsertRowid), + }; +} +``` diff --git a/gui/src/driver.ts b/gui/src/driver.ts index f28cfc21..5f9a6c50 100644 --- a/gui/src/driver.ts +++ b/gui/src/driver.ts @@ -1,9 +1,9 @@ -export * from "./drivers/base-driver"; -export { CollaborationDriver } from "./drivers/collaboration-driver"; -export { SqliteLikeBaseDriver } from "./drivers/sqlite-base-driver"; -export { - convertSqliteType, - escapeIdentity, - escapeSqlValue, -} from "./sqlite/sql-helper"; -export { default as parseSafeJson } from "./lib/json-safe"; +export * from "./drivers/base-driver"; +export { CollaborationDriver } from "./drivers/collaboration-driver"; +export { SqliteLikeBaseDriver } from "./drivers/sqlite-base-driver"; +export { + convertSqliteType, + escapeIdentity, + escapeSqlValue, +} from "./sqlite/sql-helper"; +export { default as parseSafeJson } from "./lib/json-safe"; diff --git a/gui/src/extension.ts b/gui/src/extension.ts index 1a96d776..10a878f0 100644 --- a/gui/src/extension.ts +++ b/gui/src/extension.ts @@ -1,6 +1,6 @@ -import OptimizeTableState from "./components/table-optimized/OptimizeTableState"; -import { StudioContextMenuItem } from "./messages/open-context-menu"; - -export interface StudioExtension { - contextMenu?: (state: OptimizeTableState) => StudioContextMenuItem[]; -} +import OptimizeTableState from "./components/table-optimized/OptimizeTableState"; +import { StudioContextMenuItem } from "./messages/open-context-menu"; + +export interface StudioExtension { + contextMenu?: (state: OptimizeTableState) => StudioContextMenuItem[]; +} diff --git a/gui/tsconfig.json b/gui/tsconfig.json index 05f6b4e5..54232dc7 100644 --- a/gui/tsconfig.json +++ b/gui/tsconfig.json @@ -14,7 +14,8 @@ ".eslintrc.cjs", "*.js", "*.ts", - "jest.config.cjs" -, "../studio/src/components/file-upload.ts" ], + "jest.config.cjs", + "../studio/src/components/file-upload.ts" + ], "exclude": ["node_modules", "dist"] }