Files
duckdb-ui/ts/pkgs/duckdb-data-values/src/DuckDBStructValue.ts
Jeff Raymakers 0edb52054a add duckdb-ui-client & other ts pkgs (#10)
* add duckdb-ui-client & other ts pkgs

* workflow fixes

* fix working dir

* no sparse checkout; specify package.json path

* path to pnpm-lock.yaml

* add check & build test

* workflow step descriptions

* use comments & names

* one more naming tweak
2025-06-13 09:16:05 -07:00

34 lines
1.0 KiB
TypeScript

import { displayStringForDuckDBValue } from './conversion/displayStringForDuckDBValue.js';
import { jsonFromDuckDBValue } from './conversion/jsonFromDuckDBValue.js';
import { DuckDBStructEntry } from './DuckDBStructEntry.js';
import { Json } from './Json.js';
import { SpecialDuckDBValue } from './SpecialDuckDBValue.js';
export class DuckDBStructValue extends SpecialDuckDBValue {
public readonly entries: readonly DuckDBStructEntry[];
constructor(entries: readonly DuckDBStructEntry[]) {
super();
this.entries = entries;
}
public toDuckDBString(): string {
const entryStrings = this.entries.map(
({ key, value }) =>
`${displayStringForDuckDBValue(key)}: ${displayStringForDuckDBValue(
value,
)}`,
);
return `{${entryStrings.join(', ')}}`;
}
public toJson(): Json {
const result: Json = {};
for (const { key, value } of this.entries) {
const keyString = displayStringForDuckDBValue(key);
result[keyString] = jsonFromDuckDBValue(value);
}
return result;
}
}