From 826ba5e623565f6a12b02ea5d197ab53031a41de Mon Sep 17 00:00:00 2001 From: James Kerr Date: Fri, 27 Sep 2024 14:28:48 -0700 Subject: [PATCH] Removed query versions and fixed type errors --- .../src/electron/ops/export-query-group-op.ts | 4 +-- .../zui/src/electron/ops/import-queries-op.ts | 11 ++----- apps/zui/src/js/api/queries/export.ts | 4 +-- apps/zui/src/js/api/queries/queries-api.ts | 2 -- apps/zui/src/js/api/queries/types.ts | 2 -- apps/zui/src/js/state/Editor/selectors.ts | 3 +- apps/zui/src/js/state/Queries/parsers.ts | 31 +++---------------- apps/zui/src/js/state/Queries/selectors.ts | 20 ------------ apps/zui/src/js/state/Tabs/flows.ts | 2 -- .../src/js/state/stores/get-persistable.ts | 2 -- apps/zui/src/js/state/types.ts | 6 ++-- 11 files changed, 13 insertions(+), 74 deletions(-) diff --git a/apps/zui/src/electron/ops/export-query-group-op.ts b/apps/zui/src/electron/ops/export-query-group-op.ts index 721ad302aa..64655762e1 100644 --- a/apps/zui/src/electron/ops/export-query-group-op.ts +++ b/apps/zui/src/electron/ops/export-query-group-op.ts @@ -1,6 +1,5 @@ import Queries from "src/js/state/Queries" import {serializeQueryLib} from "src/js/state/Queries/parsers" -import QueryVersions from "src/js/state/QueryVersions" import {createOperation} from "../../core/operations" import fs from "fs-extra" @@ -9,8 +8,7 @@ export const exportQueryGroupOp = createOperation( ({main}, groupId: string, filePath: string) => { const state = main.store.getState() const group = Queries.getGroupById(groupId)(state) - const versions = QueryVersions.raw(state) - const json = serializeQueryLib(group, versions) + const json = serializeQueryLib(group) return fs.writeJSON(filePath, json) } ) diff --git a/apps/zui/src/electron/ops/import-queries-op.ts b/apps/zui/src/electron/ops/import-queries-op.ts index 6236b0e744..a49f47f813 100644 --- a/apps/zui/src/electron/ops/import-queries-op.ts +++ b/apps/zui/src/electron/ops/import-queries-op.ts @@ -1,7 +1,6 @@ import Queries from "src/js/state/Queries" import {isGroup, isQuery} from "src/js/state/Queries/helpers" import {parseJSONLib} from "src/js/state/Queries/parsers" -import QueryVersions from "src/js/state/QueryVersions" import {createOperation} from "../../core/operations" export const importQueriesOp = createOperation( @@ -13,19 +12,15 @@ export const importQueriesOp = createOperation( } catch { return {error: "File is not JSON"} } - const {libRoot, versions} = json + const {libRoot} = json if (!isValidQueryGroup(libRoot)) { return {error: "Incorrect query format"} } main.store.dispatch(Queries.addItem(libRoot, "root")) - for (let queryId in versions) { - const version = versions[queryId] - main.store.dispatch(QueryVersions.at(queryId).sync([version])) - } - - return {size: Object.keys(versions).length, id: libRoot.id} + // TODO: TEST THIS FUNCTION AND FIX + return {size: 0, id: libRoot.id} } ) diff --git a/apps/zui/src/js/api/queries/export.ts b/apps/zui/src/js/api/queries/export.ts index c5730d2298..38b66a29c4 100644 --- a/apps/zui/src/js/api/queries/export.ts +++ b/apps/zui/src/js/api/queries/export.ts @@ -1,9 +1,7 @@ import Queries from "src/js/state/Queries" import {serializeQueryLib} from "src/js/state/Queries/parsers" -import QueryVersions from "src/js/state/QueryVersions" export const queriesExport = (groupId: string) => (dispatch, getState) => { const group = Queries.getGroupById(groupId)(getState()) - const versions = QueryVersions.raw(getState()) - return serializeQueryLib(group, versions) + return serializeQueryLib(group) } diff --git a/apps/zui/src/js/api/queries/queries-api.ts b/apps/zui/src/js/api/queries/queries-api.ts index bb1e5d1352..bcfe727a02 100644 --- a/apps/zui/src/js/api/queries/queries-api.ts +++ b/apps/zui/src/js/api/queries/queries-api.ts @@ -1,6 +1,5 @@ import {nanoid} from "@reduxjs/toolkit" import Queries from "src/js/state/Queries" -import QueryVersions from "src/js/state/QueryVersions" import {AppDispatch, GetState} from "../../state/types" import {queriesImport} from "./import" import {invoke} from "src/core/invoke" @@ -30,7 +29,6 @@ export class QueriesApi { const ids = Array.isArray(id) ? id : [id] await Promise.all( ids.map(async (id) => { - this.dispatch(QueryVersions.at(id).deleteAll()) this.dispatch(Queries.removeItems([id])) }) ) diff --git a/apps/zui/src/js/api/queries/types.ts b/apps/zui/src/js/api/queries/types.ts index 1f1499a4d2..656c0affe0 100644 --- a/apps/zui/src/js/api/queries/types.ts +++ b/apps/zui/src/js/api/queries/types.ts @@ -1,11 +1,9 @@ import {QueryPin} from "src/js/state/Editor/types" import {Query} from "src/js/state/Queries/types" -import {QueryVersion} from "src/js/state/QueryVersions/types" export type CreateQueryParams = Partial & { type?: QuerySource parentId?: string | null - versions?: QueryVersion[] } export type OpenQueryOptions = { diff --git a/apps/zui/src/js/state/Editor/selectors.ts b/apps/zui/src/js/state/Editor/selectors.ts index 3aa8fa5086..732b9e8684 100644 --- a/apps/zui/src/js/state/Editor/selectors.ts +++ b/apps/zui/src/js/state/Editor/selectors.ts @@ -1,5 +1,4 @@ import {createSelector} from "@reduxjs/toolkit" -import {QueryVersion} from "../QueryVersions/types" import activeTabSelect from "../Tab/activeTabSelect" export const getPins = activeTabSelect((tab) => { @@ -26,7 +25,7 @@ export const getSnapshot = activeTabSelect((tab) => { return { value: tab.editor.value, pins: tab.editor.pins, - } as QueryVersion + } }) export const isEmpty = createSelector(getValue, getPins, (value, pins) => { diff --git a/apps/zui/src/js/state/Queries/parsers.ts b/apps/zui/src/js/state/Queries/parsers.ts index 0700489b14..3c7f239a43 100644 --- a/apps/zui/src/js/state/Queries/parsers.ts +++ b/apps/zui/src/js/state/Queries/parsers.ts @@ -1,7 +1,6 @@ import {Group} from "./types" import {nanoid} from "@reduxjs/toolkit" -import {cloneDeep, last} from "lodash" -import {QueryVersion, QueryVersionsState} from "../QueryVersions/types" +import {cloneDeep} from "lodash" import {QueryPin} from "../Editor/types" import file from "src/js/lib/file" @@ -15,48 +14,26 @@ export type JSONGroup = { items: (JSONGroup | JSONQuery)[] } -export const parseJSONLib = ( - filePath: string -): {libRoot: Group; versions: {[queryId: string]: QueryVersion}} => { +export const parseJSONLib = (filePath: string): {libRoot: Group} => { const contents = file(filePath).readSync() const libRoot: Group = JSON.parse(contents) - const versions = {} flattenItemTree(libRoot).forEach((item) => { item.id = nanoid() if ("items" in item) { item.isOpen = false - } else { - versions[item.id] = { - version: nanoid(), - ts: new Date().toISOString(), - value: item.value || "", - pins: [...(item.pins ?? [])], - } as QueryVersion - delete item.value - delete item.pins } }) // The lib root is what gets added to queries - // The versions is an object keyed by the query id - // and the value is a single version to create - return {libRoot, versions} + return {libRoot} } -export const serializeQueryLib = ( - group: Group, - versions: QueryVersionsState -): JSONGroup => { +export const serializeQueryLib = (group: Group): JSONGroup => { // remove internal keys const jsonGroup = cloneDeep(group) const flat = flattenItemTree(jsonGroup) flat.forEach((item) => { if ("items" in item) return - const queryVs = versions[item.id] - if (!queryVs) return - const {value, pins} = queryVs.entities[last(queryVs.ids)] - item.value = value - item.pins = pins delete item.id delete item.isOpen }) diff --git a/apps/zui/src/js/state/Queries/selectors.ts b/apps/zui/src/js/state/Queries/selectors.ts index 0276d4c18e..6a0e08fae2 100644 --- a/apps/zui/src/js/state/Queries/selectors.ts +++ b/apps/zui/src/js/state/Queries/selectors.ts @@ -2,7 +2,6 @@ import {Group, QueriesState, Query} from "./types" import {State} from "../types" import TreeModel from "tree-model" import {createSelector} from "reselect" -import SessionQueries from "../SessionQueries" export const raw = (state: State): QueriesState => state.queries @@ -23,22 +22,3 @@ export const getGroupById = export const any = createSelector(getGroupById("root"), (group) => { return group.items.length > 0 }) - -export const getQueryIdToName = createSelector( - raw, - SessionQueries.raw, - (localRaw, sessionRaw) => { - const idNameMap = {} - Object.values(sessionRaw).forEach( - (session) => (idNameMap[session.id] = session.name) - ) - new TreeModel({childrenPropertyName: "items"}).parse(localRaw).walk((n) => { - if (!("items" in n.model)) { - idNameMap[n.model.id] = n.model.name - } - return true - }) - - return idNameMap - } -) diff --git a/apps/zui/src/js/state/Tabs/flows.ts b/apps/zui/src/js/state/Tabs/flows.ts index bb69b97e9f..833d464788 100644 --- a/apps/zui/src/js/state/Tabs/flows.ts +++ b/apps/zui/src/js/state/Tabs/flows.ts @@ -1,5 +1,4 @@ import {nanoid} from "@reduxjs/toolkit" -import SessionQueries from "../SessionQueries" import {Thunk} from "../types" import Tabs from "./" import {findTabById, findTabByUrl} from "./find" @@ -7,7 +6,6 @@ import {findTabById, findTabByUrl} from "./find" export const create = (url = "/", id = nanoid()): Thunk => (dispatch) => { - dispatch(SessionQueries.init(id)) dispatch(Tabs.add(id)) // move to tabHistories.restore(id, url) const history = global.tabHistories.get(id) diff --git a/apps/zui/src/js/state/stores/get-persistable.ts b/apps/zui/src/js/state/stores/get-persistable.ts index 0366321f5c..5a248afb63 100644 --- a/apps/zui/src/js/state/stores/get-persistable.ts +++ b/apps/zui/src/js/state/stores/get-persistable.ts @@ -11,8 +11,6 @@ export const GLOBAL_PERSIST: StateKey[] = [ "lakes", "launches", "queries", - "queryVersions", - "sessionQueries", "poolSettings", "querySessions", "snapshots", diff --git a/apps/zui/src/js/state/types.ts b/apps/zui/src/js/state/types.ts index 3d0a230f57..3ed8948a9f 100644 --- a/apps/zui/src/js/state/types.ts +++ b/apps/zui/src/js/state/types.ts @@ -18,9 +18,9 @@ import {PoolSettingsState} from "./PoolSettings/types" import {WindowState} from "./Window/types" import {LoadDataFormState} from "./LoadDataForm/types" import {UpdatesState} from "./Updates/types" -import {EnhancedStore, EntityState} from "@reduxjs/toolkit" +import {EnhancedStore} from "@reduxjs/toolkit" import {QuerySessionState} from "src/models/query-session" -import {SnapshotState} from "src/models/snapshot" +import {SnapshotsState} from "src/models/snapshot" export type ThunkExtraArg = { api: ZuiApi @@ -53,5 +53,5 @@ export type State = { window: WindowState updates: UpdatesState querySessions: QuerySessionState - snapshots: SnapshotState + snapshots: SnapshotsState }