From feae5dc69c7d2a5b8896061ca9ccb726ebe47d94 Mon Sep 17 00:00:00 2001 From: aereal Date: Mon, 9 Nov 2020 18:02:16 +0900 Subject: [PATCH 1/4] build: setup workflow --- .github/workflows/ci.yml | 67 ++++++++++++++++++++++++++++++++++++++++ go.mod | 3 ++ 2 files changed, 70 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 go.mod diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..a2136fd --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,67 @@ +--- + +name: CI +on: + pull_request: + push: + branches: + - main + schedule: + - + cron: '0 1 * * *' +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: lint + uses: reviewdog/action-golangci-lint@v1 + test: + strategy: + matrix: + go_version: + - 1.14.x + - 1.15.x + os: + - ubuntu-latest + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: ${{ matrix.go_version }} + - uses: actions/cache@v2 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ matrix.go_version }}-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go-${{ matrix.go_version }} + - name: test + run: go test -race -coverprofile=coverage.txt -covermode=atomic ./... + - uses: codecov/codecov-action@v1 + if: matrix.os == 'ubuntu-latest' && matrix.go_version == '1.15.x' + release: + if: github.ref == 'refs/heads/main' + needs: + - test + - lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: '14.x' + - uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-npm- + - run: | + npx semantic-release --debug \ + --branches main \ + --plugins @semantic-release/commit-analyzer \ + --plugins @semantic-release/release-notes-generator \ + --plugins @semantic-release/github + env: + GITHUB_TOKEN: ${{ github.token }} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..9db27e2 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/aereal/go-aws-timestream-driver + +go 1.15 From d84ad3a47e898cab8939c34b8e58b9a2b13ea9fc Mon Sep 17 00:00:00 2001 From: aereal Date: Mon, 9 Nov 2020 18:16:40 +0900 Subject: [PATCH 2/4] feat: initial implementations --- driver.go | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 driver.go diff --git a/driver.go b/driver.go new file mode 100644 index 0000000..ebf53a5 --- /dev/null +++ b/driver.go @@ -0,0 +1,54 @@ +package timestreamdriver + +import ( + "context" + "database/sql/driver" +) + +type Driver struct{} + +func (d *Driver) Open(dsn string) (driver.Conn, error) { + return nil, nil +} + +func (d *Driver) OpenConnector(dsn string) (driver.Connector, error) { + return &Connector{}, nil +} + +var _ interface { + driver.Driver + driver.DriverContext +} = &Driver{} + +type Connector struct{} + +func (c *Connector) Connect(ctx context.Context) (driver.Conn, error) { + return &Conn{}, nil +} + +func (c *Connector) Driver() driver.Driver { + return &Driver{} +} + +type Conn struct { + // TODO: Execer + // TODO: ExecerContext + // TODO: Pinger + // TODO: Queryer + // TODO: QueryerContext + // TODO: NamedValueChecker + // TODO: SessionResetter + // TODO: Validator +} + +func (c *Conn) Begin() (driver.Tx, error) { + return nil, nil +} + +func (c *Conn) Prepare(query string) (driver.Stmt, error) { + return nil, nil +} + +func (c *Conn) Close() error { + return nil +} From 4ff0bdc348412adb082c871ea204fefa58040420 Mon Sep 17 00:00:00 2001 From: aereal Date: Mon, 9 Nov 2020 18:26:42 +0900 Subject: [PATCH 3/4] fix: Driver.Open delegates its implementation to Connector --- driver.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/driver.go b/driver.go index ebf53a5..3a543d5 100644 --- a/driver.go +++ b/driver.go @@ -8,7 +8,11 @@ import ( type Driver struct{} func (d *Driver) Open(dsn string) (driver.Conn, error) { - return nil, nil + connector, err := d.OpenConnector(dsn) + if err != nil { + return nil, err + } + return connector.Connect(context.Background()) } func (d *Driver) OpenConnector(dsn string) (driver.Connector, error) { From a1fa4a982439ddfb4bb7fa2aaf22b39d9d911b77 Mon Sep 17 00:00:00 2001 From: aereal Date: Mon, 9 Nov 2020 18:36:31 +0900 Subject: [PATCH 4/4] fix: return stubbed Tx --- driver.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/driver.go b/driver.go index 3a543d5..8b6869a 100644 --- a/driver.go +++ b/driver.go @@ -46,7 +46,7 @@ type Conn struct { } func (c *Conn) Begin() (driver.Tx, error) { - return nil, nil + return &Tx{}, nil } func (c *Conn) Prepare(query string) (driver.Stmt, error) { @@ -56,3 +56,13 @@ func (c *Conn) Prepare(query string) (driver.Stmt, error) { func (c *Conn) Close() error { return nil } + +type Tx struct{} + +func (t *Tx) Commit() error { + return nil +} + +func (t *Tx) Rollback() error { + return nil +}