aboutsummaryrefslogtreecommitdiff
path: root/libBasicTableOperations.tcl
blob: 4eca8c8f129c18a94135a545272c39857bbebe81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/sh
# FILE: "/home/evmik/src/my_src/GradeBook/libBasicTableOperations.tcl"
# LAST MODIFICATION: "Fri, 15 Apr 2011 20:01:22 -0400 (evmik)"
# (C) 2011 by Eugeniy Mikhailov, <evgmik@gmail.com>
# $Id:$
# vim:set ft=tcl: \
exec tclsh "$0" "$@"

# #######################################################
# everywhere below db must be initialized with command
#	sqlite3 db $dbfile
# #######################################################

proc getColListFromTable {table} {
	set eval_str [concat SELECT * FROM \'$table\']
	set err [catch {
		db eval $eval_str v {
			set all_column_names $v(*)
			}
		} errStat ]
		if { $err } {
			dbg "we should never be here if GradesTable exists" 1
			dbg $errStat 1
			htmlErrorMsg $errStat
		}
	return $all_column_names	
}

proc SelectColvalueFromTable { table  column_of_interest col row_value } {
	# select value of 'column_of_interest' from 'table' where 'col'='row_value'
	set value {}
	set eval_str "SELECT \"$column_of_interest\"  FROM \'$table\'  WHERE \"$col\"=\"$row_value\""
	set err [catch {
		db eval $eval_str v {
			set value $v($column_of_interest)
		}
	} errStat ]
	if { $err } {
		set msg_text "the following error happen in proc SelectColvalueFromTable while selecting from table $table $errStat"
		htmlErrorMsg  $msg_text
		dbg  $msg_text 3
		set $value {}
	} 
	return $value
}

proc existsColumnWithRowvalueInTable { table column row_value } {
	set sql_str [concat SELECT 1 FROM \'$table\'  WHERE \"$column\"=\"$row_value\"]
	if {![db exists $sql_str]} {
		dbg  "Column \'$column\' does not have row with value \'$row_value\' in table \'$table\'" 3
		return false
	} else {
		return true
	}
}

proc UpdateColumnWithValueInTableWhere { table column val where_column row_value } {
	set eval_str [concat UPDATE \'$table\' SET \"$column\"='$val' WHERE \"$where_column\"=\'$row_value\']
	set err [catch {db eval $eval_str  } errStat]
	if { $err } {
		set msg_str  "Unable to update column $column in the table $table where $where_column=$row_value. The following error happen: $errStat" 
		htmlErrorMsg  $msg_str
		dbg  $msg_str 3
	} 
}

proc doesColumnExists {col  table} {
	if { $col in [getColListFromTable $table] } { 
		return true;
	} else {
		return false;
	}
}