Compare commits

..

2 Commits

1 changed files with 31 additions and 4 deletions

35
save.go
View File

@ -13,6 +13,7 @@ import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
semconv "go.opentelemetry.io/otel/semconv/v1.12.0"
"go.opentelemetry.io/otel/trace"
)
@ -89,10 +90,10 @@ func SaveRow(ctx context.Context, db *db.DBC, dataItem meta.IMetaStruct) error {
sqlSmt := createInsertSQLForFields(ctx, tableName, fields, 1 /*one_row*/)
span.SetAttributes(
attribute.String("table", tableName),
attribute.String("sql", sqlSmt),
//semconv.DBSQLTableKey.String(tableName),
//semconv.DBStatementKey.String(sqlSmt),
semconv.DBSystemKey.String("mysql"),
semconv.DBSQLTableKey.String(tableName),
semconv.DBStatementKey.String(sqlSmt),
semconv.DBOperationKey.String("INSERT"),
)
updateBuilder := db.UpdateBySQL(sqlSmt, params...)
@ -103,6 +104,18 @@ func SaveRow(ctx context.Context, db *db.DBC, dataItem meta.IMetaStruct) error {
sqlSmt = sqlSmt[0:200]
}
span.SetAttributes(
attribute.Int("sql_param_amount", len(params)),
)
// Convert SQL request parameters to slice of strings.
paramStrs := convertInterfacesToStrings(ctx, params)
if len(paramStrs) > 0 {
span.SetAttributes(
attribute.StringSlice("sql_params", paramStrs),
)
}
resultErr := errors.Errorf("Can not execute SaveRow. Got error from updateBuilder.ExecContext. %s (%s)", err.Error(), sqlSmt)
span.RecordError(resultErr)
span.SetStatus(codes.Error, resultErr.Error())
@ -117,6 +130,20 @@ func SaveRow(ctx context.Context, db *db.DBC, dataItem meta.IMetaStruct) error {
return nil
}
func convertInterfacesToStrings(ctx context.Context, items []interface{}) []string {
itemAmount := len(items)
if itemAmount == 0 {
return nil
}
strs := make([]string, itemAmount)
for i, item := range items {
strs[i] = fmt.Sprint(item)
}
return strs
}
func SaveMetaRootStruct(
ctx context.Context,
db *db.DBC,