/Vector/User.pm
package Vector::User;
use Vector::DB;
use Vector::Config qw/$webroot/;
use strict;

sub fetch_by_name {
	my ($class, $username) = @_;
	my $dbh = Vector::DB::connect;

	my $self = $dbh->selectrow_hashref('SELECT user_id, joined, email FROM users WHERE username = ?', undef, $username);

	if ($self) {
		$self->{username} = $username;
		return bless $self, $class;
	} else {
		return Vector::User->create($username);
	}
}

sub fetch_by_id {
	my ($class, $user_id) = @_;
	my $dbh = Vector::DB::connect;

	my $self = $dbh->selectrow_hashref('SELECT username, joined, email FROM users WHERE user_id = ?', undef, $user_id);

	if ($self) {
		$self->{user_id} = $user_id;
		return bless $self, $class;
	}
}

sub create {
	my ($class, $username) = @_;
	my $dbh = Vector::DB::connect;

	$dbh->do('INSERT INTO users (username, joined) VALUES (?, NOW())', undef, $username);

	my $self = {
		username => $username,
		email => undef
	};

	($self->{user_id}, $self->{joined}) = $dbh->selectrow_array('SELECT user_id, joined FROM users WHERE username = ?', undef, $username);

	return bless $self, $class;
}

sub save {
	my ($self) = @_;
	my $dbh = Vector::DB::connect;

	$dbh->do('UPDATE users SET email = ? WHERE user_id = ?', undef, $self->{email}, $self->{user_id});
}

sub user_url {
	my ($self) = @_;
	
	my $username = $self->{username};
	$username =~ s'://'/';

	return "${webroot}user/$username";
}

1;