2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-12 16:46:35 +00:00

configDB - added command "search" for full text search in configDB

git-svn-id: https://svn.fhem.de/fhem/trunk@5697 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
betateilchen 2014-04-29 18:06:04 +00:00
parent 01a1c4598f
commit 29fc8182b6
3 changed files with 86 additions and 7 deletions

View File

@ -1,6 +1,7 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it.
- SVN
- feature: configdb: new command search
- feature: LUXTRONIK2: estimation of electrical power consumption,
considers time depending tariffs (activeTariff)
- added: configDB functions for handling binary files

View File

@ -301,6 +301,14 @@ sub CommandConfigdb($$) {
$ret = _cfgDB_Reorg($a[1]);
}
when ('search') {
return "\n Syntax: configdb search <searchTerm> [searchVersion]" if @a < 2;
$param1 = $param1 ? $param1 : '%';
$param2 = $param2 ? $param2 : 0;
Log3('configdb', 4, "configdb: list requested for device: $param1 in version $param2.");
$ret = _cfgDB_Search($param1,$param2);
}
when ('uuid') {
$param1 = _cfgDB_Uuid;
Log3('configdb', 4, "configdb: uuid requested: $param1");
@ -311,19 +319,20 @@ sub CommandConfigdb($$) {
$ret = "\n Syntax:\n".
" configdb attr [attribute] [value]\n".
" configdb backup\n".
" configDB binfileimport <pathToFilename>\n"
" configDB binfileimport <pathToFilename>\n".
" configdb diff <device> <version>\n".
" configDB filedelete <pathToFilename>\n"
" configDB fileimport <pathToFilename>\n"
" configDB fileexport <pathToFilename>\n"
" configDB filelist\n"
" configDB filemove <pathToFilename>\n"
" configDB fileshow <pathToFilename>\n"
" configDB filedelete <pathToFilename>\n".
" configDB fileimport <pathToFilename>\n".
" configDB fileexport <pathToFilename>\n".
" configDB filelist\n".
" configDB filemove <pathToFilename>\n".
" configDB fileshow <pathToFilename>\n".
" configdb info\n".
" configdb list [device] [version]\n".
" configdb migrate\n".
" configdb recover <version>\n".
" configdb reorg [keepVersions]\n".
" configdb search <searchTerm> [version]\n".
" configdb uuid\n".
"";
}
@ -614,6 +623,29 @@ Ver 0 always indicates the currently running configuration.<br/>
database reorganisation when called from an at-Definition.<br/>
<br/>
<li><code>configdb search <searchTerm> [searchVersion]</code></li><br/>
Search for specified searchTerm in any given version (default=0)<br/>
<pre>
Example:
configdb search %2286BC%
Result:
search result for: %2286BC% in version: 0
--------------------------------------------------------------------------------
define az_RT CUL_HM 2286BC
define az_RT_Clima CUL_HM 2286BC04
define az_RT_Climate CUL_HM 2286BC02
define az_RT_ClimaTeam CUL_HM 2286BC05
define az_RT_remote CUL_HM 2286BC06
define az_RT_Weather CUL_HM 2286BC01
define az_RT_WindowRec CUL_HM 2286BC03
attr Melder_FAl peerIDs 00000000,2286BC03,
attr Melder_FAr peerIDs 00000000,2286BC03,
</pre>
<br/>
<li><code>configdb uuid</code></li><br/>
Returns a uuid that can be used for own purposes.<br/>
<br/>
@ -927,6 +959,29 @@ Ver 0 bezeichnet immer die aktuell verwendete Konfiguration.<br/>
Mit dieser Funktion l&auml;&szlig;t sich eine n&auml;chtliche Reorganisation per at umsetzen.<br/>
<br/>
<li><code>configdb search <suchBegriff> [inVersion]</code></li><br/>
Sucht nach dem Suchbegriff in der angegeben Konfigurationsversion (default=0)<br/>
<pre>
Beispiel:
configdb search %2286BC%
Ergebnis:
search result for: %2286BC% in version: 0
--------------------------------------------------------------------------------
define az_RT CUL_HM 2286BC
define az_RT_Clima CUL_HM 2286BC04
define az_RT_Climate CUL_HM 2286BC02
define az_RT_ClimaTeam CUL_HM 2286BC05
define az_RT_remote CUL_HM 2286BC06
define az_RT_Weather CUL_HM 2286BC01
define az_RT_WindowRec CUL_HM 2286BC03
attr Melder_FAl peerIDs 00000000,2286BC03,
attr Melder_FAr peerIDs 00000000,2286BC03,
</pre>
<br/>
<li><code>configdb uuid</code></li><br/>
Liefert eine uuid, die man f&uuml;r eigene Zwecke verwenden kann.<br/>
<br/>

View File

@ -705,6 +705,29 @@ sub _cfgDB_List(;$$) {
return $ret;
}
sub _cfgDB_Search($;$) {
my ($search,$searchversion) = @_;
return 'Syntax error.' if(!(defined($search)));
$searchversion = $searchversion ? $searchversion : 0;
my $fhem_dbh = _cfgDB_Connect;
my ($sql, $sth, @line, $row, @result, $ret);
$sql = "SELECT command, device, p1, p2 FROM fhemconfig as c join fhemversions as v ON v.versionuuid=c.versionuuid ".
"WHERE v.version = '$searchversion' AND command not like '#create%' ".
"AND (device like '$search%' OR P1 like '$search%' OR P2 like '$search%') ".
"ORDER BY lower(device),command DESC";
$sth = $fhem_dbh->prepare( $sql);
$sth->execute();
push @result, "search result for: $search in version: $searchversion";
push @result, "--------------------------------------------------------------------------------";
while (@line = $sth->fetchrow_array()) {
$row = "$line[0] $line[1] $line[2] $line[3]";
push @result, "$row";
}
$fhem_dbh->disconnect();
$ret = join("\n", @result);
return $ret;
}
# called from cfgDB_Diff
sub __cfgDB_Diff($$$) {
my ($fhem_dbh,$search,$searchversion) = @_;