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
This commit is contained in:
33
ts/pkgs/duckdb-data-values/src/DuckDBStructValue.ts
Normal file
33
ts/pkgs/duckdb-data-values/src/DuckDBStructValue.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user