aboutsummaryrefslogtreecommitdiff
path: root/_example/hook/hook.go
diff options
context:
space:
mode:
authormattn <mattn.jp@gmail.com>2014-01-30 19:45:09 +0900
committermattn <mattn.jp@gmail.com>2014-01-30 19:45:24 +0900
commite52d4b08c11d178166bdb6fb1b2d7742e57f2a6b (patch)
treec7156d009d7c439635815acd1ef2c1a3e51a1bc7 /_example/hook/hook.go
parentFix test (diff)
downloadgolite-e52d4b08c11d178166bdb6fb1b2d7742e57f2a6b.tar.gz
golite-e52d4b08c11d178166bdb6fb1b2d7742e57f2a6b.tar.xz
Add backup. Close #104
Diffstat (limited to '_example/hook/hook.go')
-rw-r--r--_example/hook/hook.go71
1 files changed, 71 insertions, 0 deletions
diff --git a/_example/hook/hook.go b/_example/hook/hook.go
new file mode 100644
index 0000000..59f8cd4
--- /dev/null
+++ b/_example/hook/hook.go
@@ -0,0 +1,71 @@
+package main
+
+import (
+ "database/sql"
+ "github.com/mattn/go-sqlite3"
+ "log"
+ "os"
+)
+
+func main() {
+ sqlite3conn := []*sqlite3.SQLiteConn{}
+ sql.Register("sqlite3_with_hook_example",
+ &sqlite3.SQLiteDriver{
+ ConnectHook: func(conn *sqlite3.SQLiteConn) error {
+ sqlite3conn = append(sqlite3conn, conn)
+ return nil
+ },
+ })
+ os.Remove("./foo.db")
+ os.Remove("./bar.db")
+
+ destDb, err := sql.Open("sqlite3_with_hook_example", "./foo.db")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer destDb.Close()
+ destDb.Ping()
+
+ _, err = destDb.Exec("create table foo(id int, value text)")
+ if err != nil {
+ log.Fatal(err)
+ }
+ _, err = destDb.Exec("insert into foo values(1, 'foo')")
+ if err != nil {
+ log.Fatal(err)
+ }
+ _, err = destDb.Exec("insert into foo values(2, 'bar')")
+ if err != nil {
+ log.Fatal(err)
+ }
+ _, err = destDb.Query("select * from foo")
+ if err != nil {
+ log.Fatal(err)
+ }
+ srcDb, err := sql.Open("sqlite3_with_hook_example", "./bar.db")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer srcDb.Close()
+ srcDb.Ping()
+
+ bk, err := sqlite3conn[1].Backup("main", sqlite3conn[0], "main")
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ bk.Step(-1)
+ if err != nil {
+ log.Fatal(err)
+ }
+ _, err = destDb.Query("select * from foo")
+ if err != nil {
+ log.Fatal(err)
+ }
+ _, err = destDb.Exec("insert into foo values(3, 'bar')")
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ bk.Finish()
+}