Index: openacs-4/packages/acs-tcl/tcl/acs-db-00-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/acs-db-00-procs.tcl,v diff -u -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/acs-tcl/tcl/acs-db-00-procs.tcl 20 Feb 2022 19:45:20 -0000 1.1.2.1 +++ openacs-4/packages/acs-tcl/tcl/acs-db-00-procs.tcl 21 Feb 2022 20:27:00 -0000 1.1.2.2 @@ -42,6 +42,7 @@ ::nx::Class create ::acs::db::Driver { :property backend + :property driver # # Define the "abstract" API (here via protected methods) # @@ -87,8 +88,9 @@ ::nx::Class create ::acs::db::nsdbi -superclasses ::acs::db::Driver ::nx::Class create ::acs::db::nsdbi-postgresql -superclasses {::acs::db::nsdbi ::acs::db::postgresql} - - + # + # Preliminary list of functions (to be extened/refined) + # ::acs::db::nsdb public method list_of_lists {{-dbn ""} {-bind ""} -prepare qn sql} { set bindOpt [expr {$bind ne "" ? [list -bind $bind] : ""}] if {$sql eq ""} { @@ -97,6 +99,14 @@ return [:uplevel [list ::db_list_of_lists -dbn $dbn $qn $sql {*}$bindOpt]] } + ::acs::db::nsdb public method list {{-dbn ""} {-bind ""} -prepare qn sql} { + set bindOpt [expr {$bind ne "" ? [list -bind $bind] : ""}] + if {$sql eq ""} { + set qn [uplevel [list [self] qn $qn]] + } + uplevel [list ::db_list -dbn $dbn $qn $sql {*}$bindOpt] + } + ::acs::db::nsdbi public method list_of_lists {{-dbn ""} {-bind ""} -prepare qn sql} { if {$sql eq ""} { set sql [:get_sql $qn] @@ -107,6 +117,19 @@ -result lists -max 1000000 -- $sql]] } + ::acs::db::nsdbi public method list {{-dbn ""} {-bind ""} -prepare qn sql} { + if {$sql eq ""} { + set sql [:get_sql $qn] + } + set flat [:uplevel [list ::dbi_rows -columns __columns \ + {*}[expr {$dbn ne "" ? [list -db $dbn] : ""}] \ + {*}[expr {$bind ne "" ? [list -bind $bind] : ""}] \ + -- $sql]] + if {[:uplevel {llength $__columns}] > 1} { + error "query is returning more than one column" + } + return $flat + } ########################################################################## # @@ -147,7 +170,10 @@ set driver nsdbi } } - return [::acs::db::$driver-$backend create $name -backend $backend] + + return [::acs::db::$driver-$backend create $name \ + -backend $backend \ + -driver $driver] } #