package traceimpact import ( "context" "time" "github.com/jackc/pgx/v5/pgxpool" ) // Open uses the record tables when migration 00059 is present. // Before that migration, it keeps an in-memory ledger so the process can still boot. func Open(pool *pgxpool.Pool) *Service { if pool == nil { return NewMemoryService() } ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() var exists bool err := pool.QueryRow(ctx, ` SELECT EXISTS ( SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'project_trace_items' )`).Scan(&exists) if err != nil || !exists { return NewMemoryService() } return NewService(newPGStore(pool)) }