Skip to content

Commit 4576bb3

Browse files
committed
refactoring + ydb-python-sdk
1 parent f620481 commit 4576bb3

64 files changed

Lines changed: 2598 additions & 1318 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,22 @@ SQLC_PROTOS := $(SQLC_MOD_DIR)/protos
2525
PROTO_IN := $(SQLC_PROTOS)/plugin/codegen.proto
2626
PROTO_OUT = $(REPO_ROOT)internal/codegen/pb
2727
PBOUT = $(PROTO_OUT)/codegen.pb.go
28-
ENGINE_BIN = $(BINDIR)/sqlc-engine-ydb
29-
CODEGEN_BIN = $(BINDIR)/sqlc-gen-ydb-go-sdk
30-
CODEGEN_DBSQL_BIN = $(BINDIR)/sqlc-gen-ydb-database-sql
28+
29+
# Binaries
30+
SQLC_ENGINE_YDB_BIN = $(BINDIR)/sqlc-engine-ydb
31+
CODEGEN_YDB_GO_SDK_BIN = $(BINDIR)/sqlc-gen-ydb-go-sdk
32+
CODEGEN_YDB_DATABASE_SQL_BIN = $(BINDIR)/sqlc-gen-ydb-database-sql
33+
CODEGEN_YDB_PYTHON_SDK_BIN = $(BINDIR)/sqlc-gen-ydb-python-sdk
3134

3235
# Example dirs under examples/ (each has schema.sql, queries.sql, sqlc.yaml with all plugins).
33-
# Codegen output: examples/<name>/<plugin>/ (e.g. authors/ydb-go-sdk, authors/ydb-database-sql).
36+
# Codegen output: examples/<name>/<plugin>/ (e.g. authors/ydb-go-sdk, authors/ydb-database-sql, authors/ydb-python-sdk).
3437
# To add an example: create examples/<name>/{schema.sql,queries.sql,sqlc.yaml} and add <name> to EXAMPLES.
3538
EXAMPLES ?= authors album kv batch booktest jets ondeck
36-
PLUGIN_OUTPUTS := ydb-go-sdk ydb-database-sql
39+
PLUGIN_OUTPUTS := ydb-go-sdk ydb-database-sql ydb-python-sdk
3740

3841
DOCKER_IMAGE ?= sqlc-ydb
3942

40-
.PHONY: all proto build build-engine build-codegen build-codegen-dbsql build-sqlc examples docker-build clean help
43+
.PHONY: all proto build build-engine build-codegen build-codegen-dbsql build-codegen-pysdk build-sqlc examples docker-build clean help
4144

4245
all: help
4346

@@ -47,7 +50,8 @@ help:
4750
@echo " build-engine - build sqlc-engine-ydb into $(BINDIR)/"
4851
@echo " build-codegen - build sqlc-gen-ydb-go-sdk into $(BINDIR)/ (depends on proto)"
4952
@echo " build-codegen-dbsql - build sqlc-gen-ydb-database-sql into $(BINDIR)/ (depends on proto)"
50-
@echo " build - proto + build both plugins (ydb-go-sdk + ydb-database-sql)"
53+
@echo " build-codegen-pysdk - build sqlc-gen-ydb-python-sdk into $(BINDIR)/ (depends on proto)"
54+
@echo " build - proto + build all plugins (ydb-go-sdk, ydb-database-sql, ydb-python-sdk)"
5155
@echo " build-sqlc - build sqlc from ../engine-plugin into $(BINDIR)/sqlc (needed for examples)"
5256
@echo " examples - run 'sqlc generate' in each example (EXAMPLES=$(EXAMPLES)); outputs: $(PLUGIN_OUTPUTS)"
5357
@echo " docker-build - build Docker image with sqlc + plugins (DOCKER_IMAGE=$(DOCKER_IMAGE))"
@@ -76,21 +80,26 @@ $(PBOUT): $(PROTO_IN)
7680

7781
# Build the YDB engine plugin (parses schema + queries).
7882
build-engine: $(BINDIR)
79-
go build -o $(ENGINE_BIN) ./cmd/sqlc-engine-ydb/
80-
@echo "ok: $(ENGINE_BIN)"
83+
go build -o $(SQLC_ENGINE_YDB_BIN) ./cmd/sqlc-engine-ydb/
84+
@echo "ok: $(SQLC_ENGINE_YDB_BIN)"
8185

8286
# Build the ydb-go-sdk codegen plugin. Requires proto.
8387
build-codegen: proto $(BINDIR)
84-
go build -o $(CODEGEN_BIN) ./cmd/sqlc-gen-ydb-go-sdk/
85-
@echo "ok: $(CODEGEN_BIN)"
88+
go build -o $(CODEGEN_YDB_GO_SDK_BIN) ./cmd/sqlc-gen-ydb-go-sdk/
89+
@echo "ok: $(CODEGEN_YDB_GO_SDK_BIN)"
8690

8791
# Build the ydb-database-sql codegen plugin. Requires proto.
8892
build-codegen-dbsql: proto $(BINDIR)
89-
go build -o $(CODEGEN_DBSQL_BIN) ./cmd/sqlc-gen-ydb-database-sql/
90-
@echo "ok: $(CODEGEN_DBSQL_BIN)"
93+
go build -o $(CODEGEN_YDB_DATABASE_SQL_BIN) ./cmd/sqlc-gen-ydb-database-sql/
94+
@echo "ok: $(CODEGEN_YDB_DATABASE_SQL_BIN)"
95+
96+
# Build the ydb-python-sdk codegen plugin. Requires proto.
97+
build-codegen-pysdk: proto $(BINDIR)
98+
go build -o $(CODEGEN_YDB_PYTHON_SDK_BIN) ./cmd/sqlc-gen-ydb-python-sdk/
99+
@echo "ok: $(CODEGEN_YDB_PYTHON_SDK_BIN)"
91100

92-
# Build both plugins (ydb-go-sdk + ydb-database-sql).
93-
build: build-engine build-codegen build-codegen-dbsql
101+
# Build all plugins (ydb-go-sdk, ydb-database-sql, ydb-python-sdk).
102+
build: build-engine build-codegen build-codegen-dbsql build-codegen-pysdk
94103
@echo "Plugins ready in $(BINDIR)/"
95104

96105
# Build sqlc from engine-plugin into BINDIR (so examples use plugin-aware sqlc).

cmd/sqlc-gen-ydb-database-sql/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"io"
1111
"os"
1212

13-
"github.com/sqlc-dev/sqlc-engine-ydb/internal/codegen/dbsql"
13+
"github.com/sqlc-dev/sqlc-engine-ydb/internal/codegen"
1414
"github.com/sqlc-dev/sqlc-engine-ydb/internal/codegen/pb"
1515
"google.golang.org/protobuf/proto"
1616
)
@@ -31,7 +31,7 @@ func run(ctx context.Context) error {
3131
if err := proto.Unmarshal(reqBlob, &req); err != nil {
3232
return fmt.Errorf("unmarshal request: %w", err)
3333
}
34-
resp, err := dbsql.Generate(ctx, &req)
34+
resp, err := codegen.Generate(ctx, &req, codegen.DatabaseSQL)
3535
if err != nil {
3636
return err
3737
}

cmd/sqlc-gen-ydb-go-sdk/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import (
1010
"io"
1111
"os"
1212

13+
"github.com/sqlc-dev/sqlc-engine-ydb/internal/codegen"
1314
"github.com/sqlc-dev/sqlc-engine-ydb/internal/codegen/pb"
14-
"github.com/sqlc-dev/sqlc-engine-ydb/internal/codegen/ydb"
1515
"google.golang.org/protobuf/proto"
1616
)
1717

@@ -31,7 +31,7 @@ func run(ctx context.Context) error {
3131
if err := proto.Unmarshal(reqBlob, &req); err != nil {
3232
return fmt.Errorf("unmarshal request: %w", err)
3333
}
34-
resp, err := ydb.Generate(ctx, &req)
34+
resp, err := codegen.Generate(ctx, &req, codegen.YdbGoSDK)
3535
if err != nil {
3636
return err
3737
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// sqlc-gen-ydb-python-sdk is a process-based codegen plugin for sqlc (v2 config).
2+
// It generates Python code for ydb-python-sdk (QuerySessionPool, execute_with_retries, $name params).
3+
// Reads binary GenerateRequest from stdin, writes binary GenerateResponse to stdout.
4+
package main
5+
6+
import (
7+
"bufio"
8+
"context"
9+
"fmt"
10+
"io"
11+
"os"
12+
13+
"github.com/sqlc-dev/sqlc-engine-ydb/internal/codegen"
14+
"github.com/sqlc-dev/sqlc-engine-ydb/internal/codegen/pb"
15+
"google.golang.org/protobuf/proto"
16+
)
17+
18+
func main() {
19+
if err := run(context.Background()); err != nil {
20+
fmt.Fprintf(os.Stderr, "sqlc-gen-ydb-python-sdk: %v\n", err)
21+
os.Exit(2)
22+
}
23+
}
24+
25+
func run(ctx context.Context) error {
26+
reqBlob, err := io.ReadAll(os.Stdin)
27+
if err != nil {
28+
return err
29+
}
30+
var req pb.GenerateRequest
31+
if err := proto.Unmarshal(reqBlob, &req); err != nil {
32+
return fmt.Errorf("unmarshal request: %w", err)
33+
}
34+
resp, err := codegen.Generate(ctx, &req, codegen.YdbPythonSDK)
35+
if err != nil {
36+
return err
37+
}
38+
respBlob, err := proto.Marshal(resp)
39+
if err != nil {
40+
return fmt.Errorf("marshal response: %w", err)
41+
}
42+
w := bufio.NewWriter(os.Stdout)
43+
if _, err := w.Write(respBlob); err != nil {
44+
return err
45+
}
46+
return w.Flush()
47+
}

examples/album/sqlc.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ plugins:
1212
- name: ydb-database-sql
1313
process:
1414
cmd: sqlc-gen-ydb-database-sql
15+
- name: ydb-python-sdk
16+
process:
17+
cmd: sqlc-gen-ydb-python-sdk
1518

1619
sql:
1720
- engine: ydb
@@ -26,3 +29,7 @@ sql:
2629
plugin: ydb-database-sql
2730
options:
2831
package: db
32+
- out: ydb-python-sdk
33+
plugin: ydb-python-sdk
34+
options:
35+
package: db

0 commit comments

Comments
 (0)