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  }