webtry: Only create sqlite3 tables if they don't exist yet.
authortfarina <tfarina@chromium.org>
Tue, 30 Sep 2014 15:17:10 +0000 (08:17 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 30 Sep 2014 15:17:11 +0000 (08:17 -0700)
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

experimental/webtry/webtry.go

index fd512de..a4fe9e0 100644 (file)
@@ -238,7 +238,7 @@ func init() {
                        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 @@ func init() {
              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 @@ func init() {
              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 @@ func init() {
           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.