package Mojo::Webqq::Cache;
sub new{
    return bless {}
}
sub store {
    my $self= shift;
    my ($data_key,$data,$ttl) = @_; 
    $self->{$data_key}{data} = $data;
    $self->{$data_key}{ttl} = $ttl;
    $self->{$data_key}{ctime} = time;
    
}
sub delete {
    my $self= shift;
    my $data_key = shift;
    delete $self->{$data_key};
}
sub retrieve{
    my $self = shift;
    my $data_key = shift;
    if(exists $self->{$data_key} ){
        if(defined $self->{$data_key}{ttl}){
            if($self->{$data_key}{ttl} + $self->{$data_key}{ctime} > time){
                return $self->{$data_key}{data};
            }
            else{delete $self->{$data_key};return undef}
        }
        else{
           return $self->{$data_key}{data}; 
        }
    }
    else{return undef}
}
1;