annotate util_convert.tcl @ 31:1ddfada536ff

Add utility "library" for database conversion and creation scripts.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 06 Sep 2011 16:32:26 +0300
parents
children f4dd229b17d1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 ### Helper functions
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 proc escape { str } {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 return [string map {' ''} $str]
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6 proc lescape { lst pos } {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 return [escape [lindex $lst $pos]]
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11 proc confirm_yesno { uprompt } {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12 puts -nonewline "$uprompt \[y/N\]? "
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13 flush stdout
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 set response [gets stdin]
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
15 if {[string tolower $response] == "y"} {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16 return 1
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17 } else {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18 return 0
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
21
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22 proc open_db { dbfile } {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23 global dbh
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24 if {[catch {sqlite3 dbh $dbfile} uerrmsg]} {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25 puts "Could not open SQLite3 database '$dbfile': $uerrmsg."
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
26 exit 2
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
30 proc drop_table { utable } {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
31 global dbh
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
32 puts "Dropping current table '$utable'."
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
33 if {[catch {dbh eval "DROP TABLE $utable"} uerrmsg]} {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
34 puts "Dropping table resulted in error (ignored): $uerrmsg."
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
35 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
36 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38 proc create_table { utable usql } {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39 global dbh
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
40 puts "Creating new table '$utable'."
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
41 if {[catch {dbh eval "CREATE TABLE $utable ($usql)"} uerrmsg]} {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
42 puts "Error creating table: $uerrmsg."
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
43 return 0
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
44 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
45 return 1
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
46 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
47
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
48 proc create_table_or_fail { utable usql } {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
49 if {![create_table $utable $usql]} {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50 exit 3
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
51 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
52 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
54 proc create_table_urls { } {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55 create_table_or_fail "urls" "id INTEGER PRIMARY KEY AUTOINCREMENT, utime INT, url VARCHAR(2048), user VARCHAR(32), host VARCHAR(256), chan VARCHAR(32), title VARCHAR(256)"
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
56 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
57
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
58 proc create_table_quotes_votes { utable } {
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
59 create_table_or_fail "$utable" "id INTEGER PRIMARY KEY AUTOINCREMENT, utime INT, utext VARCHAR(2048), user VARCHAR(32), host VARCHAR(256), chan VARCHAR(32)"
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
60 create_table "${utable}_votes" "id INTEGER PRIMARY KEY AUTOINCREMENT, user VARCHAR(32), urlid INTEGER, vote INTEGER"
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
61 }