github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/localdb/sqlite/sqlite.go (about) 1 package sqlite 2 3 import ( 4 "fmt" 5 6 "github.com/XSAM/otelsql" 7 "github.com/filecoin-project/bacalhau/pkg/localdb/shared" 8 semconv "go.opentelemetry.io/otel/semconv/v1.17.0" 9 10 _ "github.com/golang-migrate/migrate/v4/database/sqlite" 11 _ "modernc.org/sqlite" 12 ) 13 14 func NewSQLiteDatastore(filename string) (*shared.GenericSQLDatastore, error) { 15 db, err := otelsql.Open( 16 "sqlite", 17 filename, 18 otelsql.WithAttributes(semconv.DBSystemSqlite, semconv.PeerService("sqlite")), 19 ) 20 if err != nil { 21 return nil, err 22 } 23 if err := otelsql.RegisterDBStatsMetrics(db, otelsql.WithAttributes(semconv.DBSystemSqlite)); err != nil { //nolint:govet 24 return nil, err 25 } 26 datastore, err := shared.NewGenericSQLDatastore( 27 db, 28 "sqlite", 29 fmt.Sprintf("sqlite://%s", filename), 30 ) 31 if err != nil { 32 return nil, err 33 } 34 err = datastore.MigrateUp() 35 if err != nil { 36 return nil, err 37 } 38 return datastore, err 39 }