// Copyright 2026 Arctel.net // SPDX-License-Identifier: Apache-2.0 package driver_http import ( "Wavelet/core" "Wavelet/core/contracts" "context" "sync" "gorm.io/gorm" ) var ( dbMu sync.RWMutex dbSvc contracts.DBService ) func setDBService(s contracts.DBService) { dbMu.Lock() defer dbMu.Unlock() dbSvc = s } func getDB(ctx context.Context) *gorm.DB { if c, ok := ctx.(*core.Context); ok && c != nil { if s, err := core.Inject[contracts.DBService](c); err == nil && s != nil { return s.DB(ctx) } } dbMu.RLock() s := dbSvc dbMu.RUnlock() if s != nil { return s.DB(ctx) } return nil }