Skip to content

Commit

Permalink
Removed query versions and fixed type errors
Browse files Browse the repository at this point in the history
  • Loading branch information
jameskerr committed Sep 27, 2024
1 parent e67bb9b commit 826ba5e
Show file tree
Hide file tree
Showing 11 changed files with 13 additions and 74 deletions.
4 changes: 1 addition & 3 deletions apps/zui/src/electron/ops/export-query-group-op.ts
Original file line number Diff line number Diff line change
@@ -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"

Expand All @@ -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)
}
)
11 changes: 3 additions & 8 deletions apps/zui/src/electron/ops/import-queries-op.ts
Original file line number Diff line number Diff line change
@@ -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(
Expand All @@ -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}
}
)

Expand Down
4 changes: 1 addition & 3 deletions apps/zui/src/js/api/queries/export.ts
Original file line number Diff line number Diff line change
@@ -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)
}
2 changes: 0 additions & 2 deletions apps/zui/src/js/api/queries/queries-api.ts
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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]))
})
)
Expand Down
2 changes: 0 additions & 2 deletions apps/zui/src/js/api/queries/types.ts
Original file line number Diff line number Diff line change
@@ -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<Query> & {
type?: QuerySource
parentId?: string | null
versions?: QueryVersion[]
}

export type OpenQueryOptions = {
Expand Down
3 changes: 1 addition & 2 deletions apps/zui/src/js/state/Editor/selectors.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {createSelector} from "@reduxjs/toolkit"
import {QueryVersion} from "../QueryVersions/types"
import activeTabSelect from "../Tab/activeTabSelect"

export const getPins = activeTabSelect((tab) => {
Expand All @@ -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) => {
Expand Down
31 changes: 4 additions & 27 deletions apps/zui/src/js/state/Queries/parsers.ts
Original file line number Diff line number Diff line change
@@ -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"

Expand All @@ -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
})
Expand Down
20 changes: 0 additions & 20 deletions apps/zui/src/js/state/Queries/selectors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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<Query>(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
}
)
2 changes: 0 additions & 2 deletions apps/zui/src/js/state/Tabs/flows.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import {nanoid} from "@reduxjs/toolkit"
import SessionQueries from "../SessionQueries"
import {Thunk} from "../types"
import Tabs from "./"
import {findTabById, findTabByUrl} from "./find"

export const create =
(url = "/", id = nanoid()): Thunk<string> =>
(dispatch) => {
dispatch(SessionQueries.init(id))
dispatch(Tabs.add(id))
// move to tabHistories.restore(id, url)
const history = global.tabHistories.get(id)
Expand Down
2 changes: 0 additions & 2 deletions apps/zui/src/js/state/stores/get-persistable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ export const GLOBAL_PERSIST: StateKey[] = [
"lakes",
"launches",
"queries",
"queryVersions",
"sessionQueries",
"poolSettings",
"querySessions",
"snapshots",
Expand Down
6 changes: 3 additions & 3 deletions apps/zui/src/js/state/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -53,5 +53,5 @@ export type State = {
window: WindowState
updates: UpdatesState
querySessions: QuerySessionState
snapshots: SnapshotState
snapshots: SnapshotsState
}

0 comments on commit 826ba5e

Please sign in to comment.