Type viewV2

This commit is contained in:
Adria Navarro 2024-12-20 14:49:15 +01:00
parent 02578e2f0d
commit b0ef785e7a
3 changed files with 46 additions and 12 deletions

View File

@ -49,7 +49,7 @@ export const createActions = (context: StoreContext): TableActions => {
return datasource?.type === "table" && !!datasource?.tableId return datasource?.type === "table" && !!datasource?.tableId
} }
const getRow = async (id: string) => { const getRow = async (id: any) => {
const res = await API.searchTable(get(datasource).tableId, { const res = await API.searchTable(get(datasource).tableId, {
limit: 1, limit: 1,
query: { query: {

View File

@ -1,16 +1,42 @@
import { get } from "svelte/store" import { get } from "svelte/store"
import { SortOrder } from "@budibase/types" import {
Row,
SaveRowRequest,
SortOrder,
UpdateViewRequest,
} from "@budibase/types"
import { Store as StoreContext } from ".."
const SuppressErrors = true const SuppressErrors = true
export const createActions = context => { interface ViewActions {
viewV2: {
actions: {
saveDefinition: (newDefinition: UpdateViewRequest) => Promise<void>
addRow: (row: SaveRowRequest) => Promise<Row>
updateRow: (row: SaveRowRequest) => Promise<Row>
deleteRows: (rows: (string | Row)[]) => Promise<void>
getRow: (id: string) => Promise<Row>
isDatasourceValid: (datasource: {
type: string
id: string
tableId: string
}) => boolean
canUseColumn: (name: string) => boolean
}
}
}
export type Store = ViewActions
export const createActions = (context: StoreContext): ViewActions => {
const { API, datasource, columns } = context const { API, datasource, columns } = context
const saveDefinition = async newDefinition => { const saveDefinition = async (newDefinition: UpdateViewRequest) => {
await API.viewV2.update(newDefinition) await API.viewV2.update(newDefinition)
} }
const saveRow = async row => { const saveRow = async (row: SaveRowRequest) => {
const $datasource = get(datasource) const $datasource = get(datasource)
row = { row = {
...row, ...row,
@ -23,11 +49,11 @@ export const createActions = context => {
} }
} }
const deleteRows = async rows => { const deleteRows = async (rows: (string | Row)[]) => {
await API.deleteRows(get(datasource).id, rows) await API.deleteRows(get(datasource).id, rows)
} }
const getRow = async id => { const getRow = async (id: string) => {
const res = await API.viewV2.fetch(get(datasource).id, { const res = await API.viewV2.fetch(get(datasource).id, {
limit: 1, limit: 1,
query: { query: {
@ -40,13 +66,17 @@ export const createActions = context => {
return res?.rows?.[0] return res?.rows?.[0]
} }
const isDatasourceValid = datasource => { const isDatasourceValid = (datasource: {
type: string
id: string
tableId: string
}) => {
return ( return (
datasource?.type === "viewV2" && datasource?.id && datasource?.tableId datasource?.type === "viewV2" && !!datasource?.id && !!datasource?.tableId
) )
} }
const canUseColumn = name => { const canUseColumn = (name: string) => {
return get(columns).some(col => col.name === name && col.visible) return get(columns).some(col => col.name === name && col.visible)
} }
@ -65,7 +95,7 @@ export const createActions = context => {
} }
} }
export const initialise = context => { export const initialise = (context: StoreContext) => {
const { const {
definition, definition,
datasource, datasource,

View File

@ -57,7 +57,8 @@ export interface BaseStore {
export type Store = BaseStore & export type Store = BaseStore &
Columns.Store & Columns.Store &
Table.Store & { Table.Store &
ViewV2.Store & {
// TODO while typing the rest of stores // TODO while typing the rest of stores
datasource: Writable<any> & { actions: any } datasource: Writable<any> & { actions: any }
definition: Writable<any> definition: Writable<any>
@ -70,6 +71,9 @@ export type Store = BaseStore &
initialFilter: Writable<any> initialFilter: Writable<any>
initialSortColumn: Writable<any> initialSortColumn: Writable<any>
initialSortOrder: Writable<any> initialSortOrder: Writable<any>
rows: Writable<any> & { actions: any }
subscribe: any
config: Writable<any>
} }
export const attachStores = (context: Store): Store => { export const attachStores = (context: Store): Store => {