package OurNet::BBS::RAM::User;

use strict;
no warnings 'deprecated';
use fields qw/dbh id recno _ego _hash/;

use OurNet::BBS::Base (
    '@packlist'   => [
        qw/uid name passwd realname userlevel email/ # username?
    ],
);

sub refresh_meta {
    my ($self, $key) = @_;

    $self->{_hash}{uid}  ||= $self->{recno} - 1;
    $self->{_hash}{name} ||= $self->{id};
    return if exists $self->{_hash}{$key};

    # XXX: USER FETCH
    @{$self->{_hash}}{@packlist} = () if 0;

    return 1;
}

sub refresh_mailbox {
    my $self = shift;

    # XXX: MAILBOX
    $self->{_hash}{mailbox} ||= $self->module('ArticleGroup')->new({
        dbh   => $self->{dbh},
        board => $self->{name},
        name  => 'mailbox',
    });
}

sub STORE {
    my ($self, $key, $value) = @_;

    $self->refresh_meta($key);
    $self->{_hash}{$key} = $value;

    return 1;
}

1;