OLD | NEW |
1 package main | 1 package main |
2 | 2 |
3 import ( | 3 import ( |
4 "bytes" | 4 "bytes" |
5 "crypto/md5" | 5 "crypto/md5" |
6 "database/sql" | 6 "database/sql" |
7 "encoding/base64" | 7 "encoding/base64" |
8 "encoding/binary" | 8 "encoding/binary" |
9 "encoding/json" | 9 "encoding/json" |
10 "flag" | 10 "flag" |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 sql := `CREATE TABLE IF NOT EXISTS source_images ( | 228 sql := `CREATE TABLE IF NOT EXISTS source_images ( |
229 id INTEGER PRIMARY KEY NOT NULL, | 229 id INTEGER PRIMARY KEY NOT NULL, |
230 image MEDIUMBLOB DEFAULT '' NOT NULL, -- forma
tted as a PNG. | 230 image MEDIUMBLOB DEFAULT '' NOT NULL, -- forma
tted as a PNG. |
231 width INTEGER DEFAULT 0 NOT NULL, | 231 width INTEGER DEFAULT 0 NOT NULL, |
232 height INTEGER DEFAULT 0 NOT NULL, | 232 height INTEGER DEFAULT 0 NOT NULL, |
233 create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, | 233 create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, |
234 hidden INTEGER DEFAULT 0 NOT NULL | 234 hidden INTEGER DEFAULT 0 NOT NULL |
235 )` | 235 )` |
236 _, err = db.Exec(sql) | 236 _, err = db.Exec(sql) |
237 if err != nil { | 237 if err != nil { |
238 » » » glog.Infof("status creating sqlite table for sources: %q
\n", err) | 238 » » » glog.Errorf("Creating source_images table failed: %s", e
rr) |
239 } | 239 } |
240 | 240 |
241 sql = `CREATE TABLE IF NOT EXISTS webtry ( | 241 sql = `CREATE TABLE IF NOT EXISTS webtry ( |
242 code TEXT DEFAULT '' NOT NULL, | 242 code TEXT DEFAULT '' NOT NULL, |
243 create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, | 243 create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, |
244 hash CHAR(64) DEFAULT '' NOT NULL, | 244 hash CHAR(64) DEFAULT '' NOT NULL, |
245 width INTEGER DEFAULT 256 NOT NULL, | 245 width INTEGER DEFAULT 256 NOT NULL, |
246 height INTEGER DEFAULT 256 NOT NULL, | 246 height INTEGER DEFAULT 256 NOT NULL, |
247 gpu BOOL DEFAULT 0 NOT NULL, | 247 gpu BOOL DEFAULT 0 NOT NULL, |
248 source_image_id INTEGER DEFAULT 0 NOT NULL, | 248 source_image_id INTEGER DEFAULT 0 NOT NULL, |
249 | 249 |
250 PRIMARY KEY(hash) | 250 PRIMARY KEY(hash) |
251 )` | 251 )` |
252 _, err = db.Exec(sql) | 252 _, err = db.Exec(sql) |
253 if err != nil { | 253 if err != nil { |
254 » » » glog.Infof("status creating sqlite table for webtry: %q\
n", err) | 254 » » » glog.Errorf("Creating webtry table failed: %s", err) |
255 } | 255 } |
256 | 256 |
257 sql = `CREATE TABLE IF NOT EXISTS workspace ( | 257 sql = `CREATE TABLE IF NOT EXISTS workspace ( |
258 name CHAR(64) DEFAULT '' NOT NULL, | 258 name CHAR(64) DEFAULT '' NOT NULL, |
259 create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, | 259 create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, |
260 PRIMARY KEY(name) | 260 PRIMARY KEY(name) |
261 )` | 261 )` |
262 _, err = db.Exec(sql) | 262 _, err = db.Exec(sql) |
263 if err != nil { | 263 if err != nil { |
264 » » » glog.Infof("status creating sqlite table for workspace:
%q\n", err) | 264 » » » glog.Errorf("Creating workspace table failed: %s", err) |
265 } | 265 } |
266 | 266 |
267 sql = `CREATE TABLE IF NOT EXISTS workspacetry ( | 267 sql = `CREATE TABLE IF NOT EXISTS workspacetry ( |
268 name CHAR(64) DEFAULT '' NOT NULL, | 268 name CHAR(64) DEFAULT '' NOT NULL, |
269 create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, | 269 create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, |
270 hash CHAR(64) DEFAULT '' NOT NULL, | 270 hash CHAR(64) DEFAULT '' NOT NULL, |
271 width INTEGER DEFAULT 256 NOT NULL, | 271 width INTEGER DEFAULT 256 NOT NULL, |
272 height INTEGER DEFAULT 256 NOT NULL, | 272 height INTEGER DEFAULT 256 NOT NULL, |
273 gpu BOOL DEFAULT 0 NOT NULL, | 273 gpu BOOL DEFAULT 0 NOT NULL, |
274 hidden INTEGER DEFAULT 0 NOT NULL, | 274 hidden INTEGER DEFAULT 0 NOT NULL, |
275 source_image_id INTEGER DEFAULT 0 NOT NULL, | 275 source_image_id INTEGER DEFAULT 0 NOT NULL, |
276 | 276 |
277 FOREIGN KEY (name) REFERENCES workspace(name) | 277 FOREIGN KEY (name) REFERENCES workspace(name) |
278 )` | 278 )` |
279 _, err = db.Exec(sql) | 279 _, err = db.Exec(sql) |
280 if err != nil { | 280 if err != nil { |
281 » » » glog.Infof("status creating sqlite table for workspace t
ry: %q\n", err) | 281 » » » glog.Errorf("Creating workspacetry table failed: %s", er
r) |
282 } | 282 } |
283 } | 283 } |
284 | 284 |
285 // Ping the database to keep the connection fresh. | 285 // Ping the database to keep the connection fresh. |
286 go func() { | 286 go func() { |
287 c := time.Tick(1 * time.Minute) | 287 c := time.Tick(1 * time.Minute) |
288 for _ = range c { | 288 for _ = range c { |
289 if err := db.Ping(); err != nil { | 289 if err := db.Ping(); err != nil { |
290 glog.Errorf("Database failed to respond: %q\n",
err) | 290 glog.Errorf("Database failed to respond: %q\n",
err) |
291 } | 291 } |
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
961 http.HandleFunc("/sources/", autogzip.HandleFunc(sourcesHandler)) | 961 http.HandleFunc("/sources/", autogzip.HandleFunc(sourcesHandler)) |
962 | 962 |
963 // Resources are served directly | 963 // Resources are served directly |
964 // TODO add support for caching/etags/gzip | 964 // TODO add support for caching/etags/gzip |
965 http.Handle("/res/", autogzip.Handle(http.FileServer(http.Dir("./")))) | 965 http.Handle("/res/", autogzip.Handle(http.FileServer(http.Dir("./")))) |
966 | 966 |
967 // TODO Break out /c/ as it's own handler. | 967 // TODO Break out /c/ as it's own handler. |
968 http.HandleFunc("/", autogzip.HandleFunc(mainHandler)) | 968 http.HandleFunc("/", autogzip.HandleFunc(mainHandler)) |
969 glog.Fatal(http.ListenAndServe(*port, nil)) | 969 glog.Fatal(http.ListenAndServe(*port, nil)) |
970 } | 970 } |
OLD | NEW |