package Common::DB::Item::Message;

use strict;
use warnings;

use lib '/app/tools/common/lib';
use Common::DB::ItemCollection;
use Common::DB::Item;
use Common::Assert;

use base 'Common::DB::Item';

use constant kTable => 'message';
use constant kDB    => Common::DB::Item::kCommonDB;

sub GetByID {
    my $class = shift;
    my $id = shift || return;

    my $sql = "SELECT * FROM " . kTable . " WHERE message_id = " . $class->quote($id);
    return $class->GetAll($sql);
}

sub GetLastMessages {
    my $class = shift;
    my %args  = @_;
    my $area  = $args{area};
    my $type  = $args{type};
    my $limit = $args{limit};

    assert( $area, 'area required' );

    my $sql = "SELECT * FROM " . kTable . " WHERE ";

    $sql .= "area = " . $class->quote($area);
    $sql .= " AND (date_expires > NOW() || date_expires IS NULL) ";

    $sql .= " AND type = " . $class->quote($type) if ($type);

    $sql .= " ORDER BY date_created DESC";

    $sql .= " LIMIT $limit" if ($limit);

    return $class->SUPER::GetAll($sql);
}

1;
