package persistence

import (
	"database/sql"
	"testing"

	"github.com/nexuscrm/kernel/pkg/schemacatalog"
)

func createCanonicalSystemTablesForIntegration(t *testing.T, db *sql.DB, tableNames ...string) {
	t.Helper()
	definitions, err := schemacatalog.SystemTableDefinitions()
	if err != nil {
		t.Fatal(err)
	}
	byName := make(map[string]int, len(definitions))
	for index := range definitions {
		byName[definitions[index].TableName] = index
	}
	repo := NewSchemaRepository(db, nil)
	for _, tableName := range tableNames {
		index, ok := byName[tableName]
		if !ok {
			t.Fatalf("canonical system catalog does not declare %s", tableName)
		}
		if err := repo.CreatePhysicalTable(t.Context(), definitions[index]); err != nil {
			t.Fatalf("create canonical %s: %v", tableName, err)
		}
	}
}
