DJabberd-RosterStorage-SQLite
view release on metacpan or search on metacpan
lib/DJabberd/RosterStorage/SQLite.pm view on Meta::CPAN
$dbh->do($sql, undef, @args);
} else {
$dbh->do("INSERT INTO roster (userid, contactid, name, subscription) ".
"VALUES (?,?,?,?)", undef,
$userid, $contactid, $ritem->name, $ritem->subscription->as_bitmask)
}
# add to groups
foreach my $gname ($ritem->groups) {
next if $in_group{$gname}; # already in this group, skip
my $gid = $self->_groupid_alloc($userid, $gname);
$dbh->do("INSERT OR IGNORE INTO groupitem (groupid, contactid) VALUES (?,?)",
undef, $gid, $contactid);
}
$dbh->commit
or return $fail->();
$cb->done($ritem);
}
# returns ([groupid, groupname], ...)
sub _groups_of_contactid {
my ($self, $userid, $contactid) = @_;
my @ret;
my $sql = qq{
SELECT rg.groupid, rg.name
FROM rostergroup rg, groupitem gi
WHERE rg.userid=? AND gi.groupid=rg.groupid AND gi.contactid=?
};
my $sth = $self->{dbh}->prepare($sql);
$sth->execute($userid, $contactid);
while (my ($gid, $name) = $sth->fetchrow_array) {
push @ret, [$gid, $name];
}
return @ret;
}
sub delete_roster_item {
my ($self, $cb, $jid, $ritem) = @_;
$logger->debug("delete roster item!");
my $dbh = $self->{dbh};
( run in 2.654 seconds using v1.01-cache-2.11-cpan-5735350b133 )