// Copyright 2017 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//go:build cgo
// +build cgo

// Package sqlite3 provides the sqlite3 driver for
// x/build/perfdata/db. It must be imported instead of go-sqlite3 to
// ensure foreign keys are properly honored.
package sqlite3

import (
	"database/sql"

	sqlite3 "github.com/mattn/go-sqlite3"
	"golang.org/x/build/perfdata/db"
)

func init() {
	db.RegisterOpenHook("sqlite3", func(db *sql.DB) error {
		db.Driver().(*sqlite3.SQLiteDriver).ConnectHook = func(c *sqlite3.SQLiteConn) error {
			_, err := c.Exec("PRAGMA foreign_keys = ON;", nil)
			return err
		}
		return nil
	})
}
