webtry: Only create sqlite3 tables if they don't exist yet.
Otherwise it will through an error like the following:
2014/09/28 21:22:24 Info: status creating sqlite table for sources:
"table source_images already exists"
2014/09/28 21:22:24 Info: status creating sqlite table for webtry:
"table webtry already exists"
2014/09/28 21:22:24 Info: status creating sqlite table for workspace:
"table workspace already exists"
2014/09/28 21:22:24 Info: status creating sqlite table for workspace
try: "table workspacetry already exists"
To test locally the following was done:
$ ./gyp_skia gyp/webtry.gyp gyp/most.gyp -Dskia_gpu=0
$ ninja -C out/Debug webtry
$ cd experimental/webtry
$ go get -d
$ go build webtry.go
$ ./webtry
$ google-chrome http://localhost:8000
Expected: see no more the above messages.
BUG=None
TEST=see above
R=stephana@google.com, jcgregorio@google.com
Author: tfarina@chromium.org
Review URL: https://codereview.chromium.org/613593002
diff --git a/experimental/webtry/webtry.go b/experimental/webtry/webtry.go
index fd512de..a4fe9e0 100644
--- a/experimental/webtry/webtry.go
+++ b/experimental/webtry/webtry.go
@@ -238,7 +238,7 @@
log.Printf("ERROR: Failed to open: %q\n", err)
panic(err)
}
- sql := `CREATE TABLE source_images (
+ sql := `CREATE TABLE IF NOT EXISTS source_images (
id INTEGER PRIMARY KEY NOT NULL,
image MEDIUMBLOB DEFAULT '' NOT NULL, -- formatted as a PNG.
width INTEGER DEFAULT 0 NOT NULL,
@@ -247,9 +247,11 @@
hidden INTEGER DEFAULT 0 NOT NULL
)`
_, err = db.Exec(sql)
- log.Printf("Info: status creating sqlite table for sources: %q\n", err)
+ if err != nil {
+ log.Printf("Info: status creating sqlite table for sources: %q\n", err)
+ }
- sql = `CREATE TABLE webtry (
+ sql = `CREATE TABLE IF NOT EXISTS webtry (
code TEXT DEFAULT '' NOT NULL,
create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
hash CHAR(64) DEFAULT '' NOT NULL,
@@ -258,17 +260,21 @@
PRIMARY KEY(hash)
)`
_, err = db.Exec(sql)
- log.Printf("Info: status creating sqlite table for webtry: %q\n", err)
+ if err != nil {
+ log.Printf("Info: status creating sqlite table for webtry: %q\n", err)
+ }
- sql = `CREATE TABLE workspace (
+ sql = `CREATE TABLE IF NOT EXISTS workspace (
name CHAR(64) DEFAULT '' NOT NULL,
create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
PRIMARY KEY(name)
)`
_, err = db.Exec(sql)
- log.Printf("Info: status creating sqlite table for workspace: %q\n", err)
+ if err != nil {
+ log.Printf("Info: status creating sqlite table for workspace: %q\n", err)
+ }
- sql = `CREATE TABLE workspacetry (
+ sql = `CREATE TABLE IF NOT EXISTS workspacetry (
name CHAR(64) DEFAULT '' NOT NULL,
create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
hash CHAR(64) DEFAULT '' NOT NULL,
@@ -278,7 +284,9 @@
FOREIGN KEY (name) REFERENCES workspace(name)
)`
_, err = db.Exec(sql)
- log.Printf("Info: status creating sqlite table for workspace try: %q\n", err)
+ if err != nil {
+ log.Printf("Info: status creating sqlite table for workspace try: %q\n", err)
+ }
}
// Ping the database to keep the connection fresh.