mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-06 16:02:23 +00:00
* upgrade duckdb * basic ducklake works * ducklake works with custom db catalogs * fix: pwsh skip already installed modules outside of cache (#6037) * improve query performance of user stats * separate ducklake_catalog db * ducklake settings * DucklakeSettings frontend * Ducklake ws settings saved in backend * fetch ducklake catalog resource * Ducklake works with configured s3 storage * Ducklake as asset * ducklake asset icon * Fix duckdb array and object args not working properly (#6254) * Fix bug with comments in duckdb * Avoid multiple queries when doing ATTACH ducklake * trunc sig no longer needed now that comments are trimmed * cache DuckdbConnectionSettingsResponse * duplicated code * transform_attach_ducklake contributes to duckdb_connection_settings_cache * eliminate the need for used_storages * nit * cleaner management of the bigquery credentials file * DBManagerDrawer refactor to prepare for Ducklake * get ducklake schema * implement delete for ducklake * load column metadata for ducklake * Select query works for ducklake, basic db explorer works ! * duckdb count query * Support all db ops for ducklake * clean migrations * SQL repl for Ducklake * fix broken database studio * nit * assert function * Ducklake in Editor Bar * default ducklake syntax + allow extra args * DucklakeCatalogWizard UI * nit + remove extra $ * modal when databases do not exist * cannot be windmill * Ducklake works safely with instance database * Avoid sending instance db credentials on network * resource leak security * remove fetch_attach_db_conn_str * prevent instance pg password leak * hide asset usage count when not available * case unsensitivity duckdb * warnings * disable instance catalog * use shorthand syntax when inserting with EditorBar * Instance ducklake catalog is now safe to use * use safer argon2 pwd * update package json parsers * update package json * better msgs * tooltips * disable explore button until saved * nit * fix warnings * better ducklake_user password management * nit * Sanitize passwords from errors in ducklake * DisplayResult broken in job result * remove superadmin requirement to check databases_exist * duckdb_connection_settings_v2_inner * Ducklake works on agent worker (finally) * ci * #[allow(dead_code)] * fix openapi missing response * Separate +Database button for DuckDB in EditorBar * Fix dropdown in ducklake settings * Attempt to fix migration race condition in CI * update sqlx failing for some offline queries * avoid temp password for ducklake_user * nits * ducklake settings nits * update duckdb default script * fix sql repl resetting text on refresh * avoid pgcrypto extension --------- Co-authored-by: HugoCasa <hugo@casademont.ch> Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
81 lines
2.3 KiB
Svelte
81 lines
2.3 KiB
Svelte
<script module lang="ts">
|
|
export function assetCanBeExplored(
|
|
asset: Asset,
|
|
_resourceMetadata?: { resource_type?: string }
|
|
): boolean {
|
|
return (
|
|
asset.kind === 'ducklake' ||
|
|
asset.kind === 's3object' ||
|
|
(asset.kind === 'resource' && isDbType(_resourceMetadata?.resource_type))
|
|
)
|
|
}
|
|
</script>
|
|
|
|
<script lang="ts">
|
|
import { isDbType } from '$lib/components/apps/components/display/dbtable/utils'
|
|
import { formatAsset, type Asset } from '$lib/components/assets/lib'
|
|
import { Button, ButtonType } from '$lib/components/common'
|
|
import DbManagerDrawer from '$lib/components/DBManagerDrawer.svelte'
|
|
import S3FilePicker from '$lib/components/S3FilePicker.svelte'
|
|
import { userStore } from '$lib/stores'
|
|
import { isS3Uri } from '$lib/utils'
|
|
import { Database, File } from 'lucide-svelte'
|
|
import DucklakeIcon from './icons/DucklakeIcon.svelte'
|
|
|
|
const {
|
|
asset,
|
|
_resourceMetadata,
|
|
s3FilePicker,
|
|
dbManagerDrawer,
|
|
onClick,
|
|
class: className = '',
|
|
noText = false,
|
|
buttonVariant = 'border',
|
|
btnClasses = '',
|
|
disabled = false
|
|
}: {
|
|
asset: Asset
|
|
_resourceMetadata?: { resource_type?: string }
|
|
s3FilePicker?: S3FilePicker
|
|
dbManagerDrawer?: DbManagerDrawer
|
|
onClick?: () => void
|
|
class?: string
|
|
noText?: boolean
|
|
buttonVariant?: ButtonType.Variant
|
|
btnClasses?: string
|
|
disabled?: boolean
|
|
} = $props()
|
|
const assetUri = $derived(formatAsset(asset))
|
|
</script>
|
|
|
|
<Button
|
|
disabled={$userStore?.operator || disabled}
|
|
size="xs"
|
|
variant={buttonVariant}
|
|
spacingSize="xs2"
|
|
wrapperClasses={className}
|
|
{btnClasses}
|
|
on:click={async () => {
|
|
if (asset.kind === 'resource' && isDbType(_resourceMetadata?.resource_type)) {
|
|
dbManagerDrawer?.openDrawer({
|
|
type: 'database',
|
|
resourceType: _resourceMetadata.resource_type,
|
|
resourcePath: asset.path
|
|
})
|
|
} else if (asset.kind === 's3object' && isS3Uri(assetUri)) {
|
|
s3FilePicker?.open(assetUri)
|
|
} else if (asset.kind === 'ducklake') {
|
|
dbManagerDrawer?.openDrawer({ type: 'ducklake', ducklake: asset.path })
|
|
}
|
|
onClick?.()
|
|
}}
|
|
>
|
|
{#if asset.kind === 's3object'}
|
|
<span class:hidden={noText}>Explore</span> <File size={18} />
|
|
{:else if asset.kind === 'resource'}
|
|
<span class:hidden={noText}>Manage</span> <Database size={18} />
|
|
{:else if asset.kind === 'ducklake'}
|
|
<span class:hidden={noText}>Manage</span> <DucklakeIcon size={18} />
|
|
{/if}
|
|
</Button>
|