Ignore:
Timestamp:
2010-03-31T23:08:43+13:00 (14 years ago)
Author:
davidb
Message:

read_infodb_entry() implemented for sqlite. new write_infodb_rawentry() added for main dbutil.dm class

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/dbutil/sqlite.pm

    r21411 r21856  
    7272
    7373
     74sub read_infodb_cmd
     75{
     76  my $infodb_file_path = shift(@_);
     77  my $sqlcmd = shift(@_);
     78
     79  my $result = "";
     80
     81  my $sqlite3_exe = &util::filename_cat($ENV{'GSDLHOME'},"bin",$ENV{'GSDLOS'}, "sqlite3" . &util::get_os_exe());
     82  my $infodb_handle = undef;
     83  my $cmd = "echo \"$sqlcmd\" | \"$sqlite3_exe\" \"$infodb_file_path\"";
     84
     85  if (!-e "$sqlite3_exe" || !open($infodb_handle, "$cmd |"))
     86  {
     87      print STDERR "Unable to execute: $cmd\n";
     88      print STDERR "$!\n";
     89  }
     90  else {
     91
     92      my $line;
     93      while (defined($line=<$infodb_handle>)) {
     94      $result .= $line;
     95      }
     96
     97      close($infodb_handle);
     98  }
     99
     100  return $result;
     101}
     102
    74103sub get_infodb_file_path
    75104{
     
    88117  my $infodb_map = shift(@_);
    89118
    90   # !! TO IMPLEMENT
     119
     120  my $keys_str = read_infodb_cmd($infodb_file_path,"SELECT key FROM data;");
     121
     122  my @keys = split(/\n/,$keys_str);
     123
     124  foreach my $k (@keys) {
     125     
     126      my $k_safe = &sqlite_safe($k);
     127      my $select_val_cmd = "SELECT value FROM data WHERE key='$k_safe';";
     128
     129      my $val_str = read_infodb_cmd($infodb_file_path,$select_val_cmd);
     130
     131      $infodb_map->{$k} = $val_str;
     132  }
     133
    91134}
    92135
     
    146189
    147190
     191sub write_infodb_rawentry
     192{
     193  my $infodb_handle = shift(@_);
     194  my $infodb_key = shift(@_);
     195  my $infodb_val = shift(@_);
     196
     197  my $safe_infodb_key = &sqlite_safe($infodb_key);
     198  print $infodb_handle "INSERT OR REPLACE INTO data (key, value) VALUES ('" . $safe_infodb_key . "', '" . &sqlite_safe($infodb_val) . "');\n";
     199}
     200
     201
     202
    148203sub delete_infodb_entry
    149204{
Note: See TracChangeset for help on using the changeset viewer.