TT#20334 TT#21092 sipwise_mam ResultSet

relation ends to implement performance-critical joins
of the form "sipwise_mam.username =
concat(voip_subscriber.username,'@',voip_domain.domain)"
are added to provisionin_voip_subscriber, to
have proper on-clause operands in place (and prevent
"unknown column .. in on clause" error in an elegant
way).

resultset require to join voip_domain explicitly.

Change-Id: I4e20c4232f73c7e4286b96da5ded73455a417131
changes/62/15162/3
Rene Krenn 8 years ago
parent 6dbc911d7f
commit 8d433cd4bb

@ -315,6 +315,32 @@ __PACKAGE__->might_have(
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"sipwise_mam_user",
'NGCP::Schema::Result::sipwise_mam',
sub {
my $args = shift;
return {
"$args->{foreign_alias}.username" => { '=' => \"concat($args->{self_alias}.username,\"@\",domain.domain)" } ,
};
},
{ join_type => 'inner' },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->has_many(
"sipwise_mam_with",
'NGCP::Schema::Result::sipwise_mam',
sub {
my $args = shift;
return {
"$args->{foreign_alias}.with" => { '=' => \"concat($args->{self_alias}.username,\"@\",domain.domain)" } ,
};
},
{ join_type => 'inner' },
{ cascade_copy => 0, cascade_delete => 0 },
);
sub TO_JSON {
my ($self) = @_;
return {

@ -0,0 +1,62 @@
package NGCP::Schema::Result::sipwise_mam;
use Scalar::Util qw(blessed);
use parent 'DBIx::Class::Core';
our $VERSION = '2.007';
__PACKAGE__->load_components(
"InflateColumn::DateTime",
"Helper::Row::ToJSON",
"+NGCP::Schema::InflateColumn::DateTime::EpochMilli",
);
__PACKAGE__->table("prosody.sipwise_mam");
__PACKAGE__->add_columns(
"id",
{
data_type => "integer",
extra => { unsigned => 1 },
is_auto_increment => 1,
is_nullable => 0,
},
"username",
{
data_type => "varchar",
is_nullable => 0,
size => 255
},
"key",
{
data_type => "binary",
is_nullable => 0,
size => 16
},
"stanza",
{
data_type => "text",
is_nullable => 1
},
"epoch",
{
data_type => "integer",
is_nullable => 0,
},
"with",
{
data_type => "varchar",
is_nullable => 1,
size => 255
},
);
__PACKAGE__->set_primary_key("id");
sub TO_JSON {
my ($self) = @_;
return {
map { blessed($_) && $_->isa('DateTime') ? $_->datetime : $_ } %{ $self->next::method }
};
}
1;
Loading…
Cancel
Save