Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kostyay/gorm-opentelemetry
OpenTelemetry plugin for GORM v2
https://github.com/kostyay/gorm-opentelemetry
golang gorm opentelemetry opentelemetry-go
Last synced: 30 days ago
JSON representation
OpenTelemetry plugin for GORM v2
- Host: GitHub
- URL: https://github.com/kostyay/gorm-opentelemetry
- Owner: kostyay
- License: apache-2.0
- Created: 2021-01-01T16:35:58.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-05-07T20:31:12.000Z (8 months ago)
- Last Synced: 2024-11-15T22:58:45.684Z (about 2 months ago)
- Topics: golang, gorm, opentelemetry, opentelemetry-go
- Language: Go
- Homepage:
- Size: 26.4 KB
- Stars: 28
- Watchers: 1
- Forks: 12
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gorm-opentelemetry
[![Test Status](https://github.com/kostyay/gorm-opentelemetry/workflows/Test/badge.svg)](github.com/kostyay/gorm-opentelemetry/actions)OpenTelemetry plugin for GORM v2
Traces all queries along with the query SQL.
Usage Example:
====
```go
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.package main
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"github.com/kostyay/gorm-opentelemetry"
)type Product struct {
gorm.Model
Code string
Price uint
}func ExampleNewPlugin() {
// Initialize db connection
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}// Initialize otel plugin with options
plugin := otelgorm.NewPlugin(
// include any options here
)
err = db.Use(plugin)
if err != nil {
panic("failed configuring plugin")
}// Migrate the schema
err = db.AutoMigrate(&Product{})
if err != nil {
panic(err.Error())
}// Create
db.Create(&Product{Code: "D42", Price: 100})// Read
var product Product
db.First(&product, 1) // find product with integer primary key
db.First(&product, "code = ?", "D42") // find product with code D42
}```