Files
zeekay 22b3f5ce2b hanzo-ds/go: branded datastore client, rebased on clickhouse-go v2.44.0
Feature-complete v2.44.0 (lib/churl, lib/col, BFloat16, QBit, scanTypeDuration,
Options.Logger *slog.Logger) — fixes the [email protected].0 downgrade RED caught.
Package datastore, module github.com/hanzo-ds/go, depends only on hanzo-ds/native.
Wire strings preserved VERBATIM (X-ClickHouse-* headers, sql.Register("clickhouse"),
clickhouse:// DSN, ClientName="clickhouse-go") — consistent with native.
2026-07-10 13:11:20 -07:00

53 lines
1.0 KiB
Go

package ext
import (
"fmt"
"github.com/hanzo-ds/go/lib/column"
"github.com/hanzo-ds/go/lib/proto"
"strings"
)
func NewTable(name string, columns ...func(t *Table) error) (*Table, error) {
table := &Table{
name: name,
block: proto.NewBlock(),
}
for _, column := range columns {
if err := column(table); err != nil {
return nil, err
}
}
return table, nil
}
type Table struct {
name string
block *proto.Block
}
func (tbl *Table) Name() string {
return tbl.name
}
func (tbl *Table) Structure() string {
columnStructure := make([]string, 0, len(tbl.block.Columns))
for _, c := range tbl.block.Columns {
columnStructure = append(columnStructure, fmt.Sprintf("%v %v", c.Name(), c.Type()))
}
return strings.Join(columnStructure, ", ")
}
func (tbl *Table) Block() *proto.Block {
return tbl.block
}
func (tbl *Table) Append(v ...any) error {
return tbl.block.Append(v...)
}
func Column(name string, ct column.Type) func(t *Table) error {
return func(tbl *Table) error {
return tbl.block.AddColumn(name, ct)
}
}