package example import ( "context" "fmt" "github.com/jackc/pgx/v5/pgxpool" ) // AddressStore ist das Integrationstest-Beispiel (QA-01): eine // minimale, aber echte DB-gestützte Komponente — nutzt dieselbe // Tenant-DB-Isolationskonvention wie DMS/Archive (t.Cleanup, geteilte // physische Postgres-Instanz auf dem Testhost). type AddressStore struct { pool *pgxpool.Pool } func NewAddressStore(pool *pgxpool.Pool) *AddressStore { return &AddressStore{pool: pool} } func (s *AddressStore) SaveNormalized(ctx context.Context, addr string) (string, error) { normalized, err := NormalizeAddress(addr) if err != nil { return "", err } if _, err := s.pool.Exec(ctx, ` INSERT INTO example_addresses (address) VALUES ($1) ON CONFLICT (address) DO NOTHING `, normalized); err != nil { return "", fmt.Errorf("example: adresse speichern: %w", err) } return normalized, nil } func (s *AddressStore) Exists(ctx context.Context, addr string) (bool, error) { var exists bool if err := s.pool.QueryRow(ctx, `SELECT EXISTS(SELECT 1 FROM example_addresses WHERE address = $1)`, addr).Scan(&exists); err != nil { return false, fmt.Errorf("example: existenz prüfen: %w", err) } return exists, nil }