// 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
	})
}
