Skip to content

Commit 14e9442

Browse files
authored
Sample module for go sqlcommenter-http (#167)
* Sample module for sqlcommenter-http * Added Readme
1 parent 408a09e commit 14e9442

4 files changed

Lines changed: 123 additions & 0 deletions

File tree

go/samples/http/README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# sqlcommenter-http
2+
3+
4+
## Installation
5+
6+
7+
* Clone the source
8+
* Update `connection` string in Index function
9+
* Install dependencies
10+
```
11+
go build
12+
```
13+
14+
* Run the app
15+
```
16+
go run main.go
17+
````
18+
* Hit the url http://localhost:8080/ and observe the mysql logs to see comments appended

go/samples/http/go.mod

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module sqlcommenter-http
2+
3+
go 1.19
4+
5+
require (
6+
github.com/go-sql-driver/mysql v1.6.0
7+
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.10.0
8+
go.opentelemetry.io/otel/sdk v1.10.0
9+
)
10+
11+
require go.opentelemetry.io/otel v1.10.0 // indirect
12+
13+
require (
14+
github.com/go-logr/logr v1.2.3 // indirect
15+
github.com/go-logr/stdr v1.2.2 // indirect
16+
github.com/google/sqlcommenter/go/core v0.0.1-beta
17+
github.com/google/sqlcommenter/go/database/sql v0.0.1-beta
18+
github.com/google/sqlcommenter/go/net/http v0.0.1-beta
19+
go.opentelemetry.io/otel/trace v1.10.0 // indirect
20+
golang.org/x/sys v0.0.0-20220927170352-d9d178bc13c6 // indirect
21+
)

go/samples/http/go.sum

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
2+
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
3+
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
4+
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
5+
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
6+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
7+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
8+
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
9+
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
10+
github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg=
11+
github.com/google/sqlcommenter/go/core v0.0.1-beta h1:IVszEHanWVeS7UcmP8C3SHa57CmfeqMBj0QUcJ8VZ9Q=
12+
github.com/google/sqlcommenter/go/core v0.0.1-beta/go.mod h1:CZfcqmbIxngExnZ7Se6AsKNVubZhKyi54aeDJZiqTMQ=
13+
github.com/google/sqlcommenter/go/database/sql v0.0.1-beta h1:N680pEYaRwmOSrQWUd4A4aD4kj4WYxcJTQB9WLe69vY=
14+
github.com/google/sqlcommenter/go/database/sql v0.0.1-beta/go.mod h1:VdswmF4SM0cbjJdD+3GyM5QuXpHhH6F5nSzcbikzCGY=
15+
github.com/google/sqlcommenter/go/net/http v0.0.1-beta h1:7XQ6poZv+ZJwwHWQHlesq9IMsRus3G6Z9n10qAkrGqE=
16+
github.com/google/sqlcommenter/go/net/http v0.0.1-beta/go.mod h1:tVUqM1YZ/K3eRTdGzeav1GSbw+BXNdTGzSAbLW9CxAc=
17+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
18+
github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
19+
go.opentelemetry.io/otel v1.10.0 h1:Y7DTJMR6zs1xkS/upamJYk0SxxN4C9AqRd77jmZnyY4=
20+
go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ=
21+
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.10.0 h1:c9UtMu/qnbLlVwTwt+ABrURrioEruapIslTDYZHJe2w=
22+
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.10.0/go.mod h1:h3Lrh9t3Dnqp3NPwAZx7i37UFX7xrfnO1D+fuClREOA=
23+
go.opentelemetry.io/otel/sdk v1.10.0 h1:jZ6K7sVn04kk/3DNUdJ4mqRlGDiXAVuIG+MMENpTNdY=
24+
go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE=
25+
go.opentelemetry.io/otel/trace v1.10.0 h1:npQMbR8o7mum8uF95yFbOEJffhs1sbCOfDh8zAJiH5E=
26+
go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM=
27+
golang.org/x/sys v0.0.0-20220927170352-d9d178bc13c6 h1:cy1ko5847T/lJ45eyg/7uLprIE/amW5IXxGtEnQdYMI=
28+
golang.org/x/sys v0.0.0-20220927170352-d9d178bc13c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
29+
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=

go/samples/http/main.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"log"
6+
"net/http"
7+
8+
_ "github.com/go-sql-driver/mysql"
9+
"github.com/google/sqlcommenter/go/core"
10+
gosql "github.com/google/sqlcommenter/go/database/sql"
11+
httpnet "github.com/google/sqlcommenter/go/net/http"
12+
"go.opentelemetry.io/otel/exporters/stdout/stdouttrace"
13+
sdktrace "go.opentelemetry.io/otel/sdk/trace"
14+
)
15+
16+
func Index(w http.ResponseWriter, r *http.Request) {
17+
18+
connection := "root:root@/gotest"
19+
exp, _ := stdouttrace.New(stdouttrace.WithPrettyPrint())
20+
bsp := sdktrace.NewSimpleSpanProcessor(exp) // You should use batch span processor in prod
21+
tp := sdktrace.NewTracerProvider(
22+
sdktrace.WithSampler(sdktrace.AlwaysSample()),
23+
sdktrace.WithSpanProcessor(bsp),
24+
)
25+
26+
ctx, span := tp.Tracer("foo").Start(r.Context(), "parent-span-name")
27+
defer span.End()
28+
29+
db, err := gosql.Open("mysql", connection, core.CommenterOptions{EnableDBDriver: true, EnableRoute: true, EnableAction: true, EnableFramework: true, EnableTraceparent: true})
30+
if err != nil {
31+
fmt.Println(err)
32+
} else {
33+
db.ExecContext(ctx, "Select 11;")
34+
db.Exec("Select 2;")
35+
db.Prepare("Select 10")
36+
db.PrepareContext(ctx, "Select 10")
37+
}
38+
fmt.Fprintf(w, "Hello World!")
39+
}
40+
41+
// middleware is used to intercept incoming HTTP calls and apply general functions upon them.
42+
func middleware(next http.Handler) http.Handler {
43+
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
44+
ctx := core.ContextInject(r.Context(), httpnet.NewHTTPRequestExtractor(r, next))
45+
log.Printf("HTTP request sent to %s from %v", r.URL.Path, next)
46+
next.ServeHTTP(w, r.WithContext(ctx))
47+
})
48+
}
49+
50+
func main() {
51+
mux := http.NewServeMux()
52+
finalHandler := http.HandlerFunc(Index)
53+
mux.Handle("/", middleware((finalHandler)))
54+
log.Fatal(http.ListenAndServe(":8080", mux))
55+
}

0 commit comments

Comments
 (0)