MCPcopy Create free account
hub / github.com/cloudbase/garm / NewSQLDatabase

Function NewSQLDatabase

database/sql/sql.go:81–134  ·  view source on GitHub ↗
(ctx context.Context, cfg config.Database)

Source from the content-addressed store, hash-verified

79}
80
81func NewSQLDatabase(ctx context.Context, cfg config.Database) (common.Store, error) {
82 conn, err := newDBConn(cfg)
83 if err != nil {
84 return nil, fmt.Errorf("error creating DB connection: %w", err)
85 }
86 producer, err := watcher.RegisterProducer(ctx, "sql")
87 if err != nil {
88 return nil, fmt.Errorf("error registering producer: %w", err)
89 }
90
91 sqlDB, err := conn.DB()
92 if err != nil {
93 return nil, fmt.Errorf("failed to get underlying database connection: %w", err)
94 }
95
96 db := &sqlDatabase{
97 conn: conn,
98 sqlDB: sqlDB,
99 ctx: ctx,
100 cfg: cfg,
101 producer: producer,
102 }
103
104 // Create separate connection for objects database (only for SQLite)
105 if cfg.DbBackend == config.SQLiteBackend {
106 // Get config for objects database
107 objectsCfg, err := cfg.SQLiteBlobDatabaseConfig()
108 if err != nil {
109 return nil, fmt.Errorf("failed to get blob DB config: %w", err)
110 }
111
112 objectsConn, err := newDBConn(objectsCfg)
113 if err != nil {
114 return nil, fmt.Errorf("error creating objects DB connection: %w", err)
115 }
116
117 objectsSQLDB, err := objectsConn.DB()
118 if err != nil {
119 return nil, fmt.Errorf("failed to get underlying objects database connection: %w", err)
120 }
121 db.objectsConn = objectsConn
122 db.objectsSQLDB = objectsSQLDB
123 }
124
125 if err := db.migrateDB(); err != nil {
126 return nil, fmt.Errorf("error migrating database: %w", err)
127 }
128
129 if cfg.DbBackend == config.SQLiteBackend {
130 go db.startSQLiteMaintenance()
131 }
132
133 return db, nil
134}
135
136type sqlDatabase struct {
137 conn *gorm.DB

Callers 15

NewDatabaseFunction · 0.92
SetupTestMethod · 0.85
SetupTestMethod · 0.85
SetupTestMethod · 0.85
SetupTestMethod · 0.85
SetupTestMethod · 0.85
SetupTestMethod · 0.85
SetupTestMethod · 0.85
SetupTestMethod · 0.85
SetupTestMethod · 0.85
SetupTestMethod · 0.85

Calls 5

migrateDBMethod · 0.95
RegisterProducerFunction · 0.92
newDBConnFunction · 0.85

Tested by 14

SetupTestMethod · 0.68
SetupTestMethod · 0.68
SetupTestMethod · 0.68
SetupTestMethod · 0.68
SetupTestMethod · 0.68
SetupTestMethod · 0.68
SetupTestMethod · 0.68
SetupTestMethod · 0.68
SetupTestMethod · 0.68
SetupTestMethod · 0.68
SetupTestMethod · 0.68