1package OurNet::BBS::RAM::UserGroup;
2
3use strict;
4no warnings 'deprecated';
5use fields qw/dbh _ego _hash _array/;
6
7use OurNet::BBS::Base;
8
9sub refresh_meta {
10    my ($self, $key, $flag) = @_;
11    my $name;
12
13    if (defined($key) and $flag == ARRAY) {
14        # XXX: ARRAY FETCH
15        return if $self->{_array}[$key];
16    }
17    elsif ($key and $flag == HASH) {
18        # XXX: KEY FETCH
19        $name = $key;
20        return if $self->{_hash}{$name};
21        $key = 0;
22    }
23    else {
24        # XXX: GLOBAL FETCH
25    }
26
27    my $obj = $self->module('User')->new({
28        dbh   => $self->{dbh},
29        id    => $name,
30        recno => $key,
31    });
32
33    $key ||= $obj->{userno} ||= 0;
34
35    $self->{_hash}{$name} = $self->{_array}[$key] = $obj;
36
37    return 1;
38}
39
40sub STORE {
41    my ($self, $key, $value) = @_;
42
43    %{$self->module('User', $value)->new({
44        dbh => $self->{dbh},
45        id  => $key
46    })} = %{$value};
47
48    $self->refresh($key);
49}
50
51sub EXISTS {
52    my ($self, $key) = @_;
53
54    # XXX: USER EXISTS
55    return exists ($self->ego->{_hash}{$key});
56}
57
581;
59