bump DB schema to v2
Add token to "users" (for mail verification etc) Add new table "pending_mails" (to avoid spamming individual addresses)
This commit is contained in:
parent
058d93a6fd
commit
f2efaef2b9
2 changed files with 78 additions and 3 deletions
5
index.pl
5
index.pl
|
@ -187,7 +187,7 @@ app->attr(
|
||||||
return $self->app->dbh->prepare(
|
return $self->app->dbh->prepare(
|
||||||
qq{
|
qq{
|
||||||
select
|
select
|
||||||
id, name, status, is_public, email,
|
id, name, status, public_level, email,
|
||||||
registered_at, last_login, deletion_requested
|
registered_at, last_login, deletion_requested
|
||||||
from users where id = ?
|
from users where id = ?
|
||||||
}
|
}
|
||||||
|
@ -536,8 +536,9 @@ helper 'get_user_id' => sub {
|
||||||
id integer primary key,
|
id integer primary key,
|
||||||
name char(64) not null unique,
|
name char(64) not null unique,
|
||||||
status int not null,
|
status int not null,
|
||||||
is_public bool not null,
|
public_level bool not null,
|
||||||
email char(256),
|
email char(256),
|
||||||
|
token char(80),
|
||||||
password text,
|
password text,
|
||||||
registered_at datetime not null,
|
registered_at datetime not null,
|
||||||
last_login datetime not null,
|
last_login datetime not null,
|
||||||
|
|
76
migrate.pl
76
migrate.pl
|
@ -78,7 +78,7 @@ my @migrations = (
|
||||||
insert into new_users
|
insert into new_users
|
||||||
(id, name, status, is_public, registered_at, last_login)
|
(id, name, status, is_public, registered_at, last_login)
|
||||||
values
|
values
|
||||||
(?, ?, ?, ?, ?, ?)
|
(?, ?, ?, ?, ?, ?);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
$get_users_query->execute;
|
$get_users_query->execute;
|
||||||
|
@ -100,6 +100,80 @@ my @migrations = (
|
||||||
);
|
);
|
||||||
$dbh->commit;
|
$dbh->commit;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
# v1 -> v2
|
||||||
|
sub {
|
||||||
|
$dbh->begin_work;
|
||||||
|
$dbh->do(
|
||||||
|
qq{
|
||||||
|
update schema_version set version = 2;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
$dbh->do(
|
||||||
|
qq{
|
||||||
|
create table new_users (
|
||||||
|
id integer primary key,
|
||||||
|
name char(64) not null unique,
|
||||||
|
status int not null,
|
||||||
|
public_level int not null,
|
||||||
|
email char(256),
|
||||||
|
token char(80),
|
||||||
|
password text,
|
||||||
|
registered_at datetime not null,
|
||||||
|
last_login datetime not null,
|
||||||
|
deletion_requested datetime
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
my $get_users_query = $dbh->prepare(
|
||||||
|
qq{
|
||||||
|
select * from users;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
# At this point, some "users" fields were never used -> skip those
|
||||||
|
# during migration.
|
||||||
|
my $add_user_query = $dbh->prepare(
|
||||||
|
qq{
|
||||||
|
insert into new_users
|
||||||
|
(id, name, status, public_level, registered_at, last_login)
|
||||||
|
values
|
||||||
|
(?, ?, ?, ?, ?, ?);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$get_users_query->execute;
|
||||||
|
|
||||||
|
while ( my @row = $get_users_query->fetchrow_array ) {
|
||||||
|
my (
|
||||||
|
$id, $name, $status,
|
||||||
|
$is_public, $email, $password,
|
||||||
|
$reg_at, $last_login, $del_requested
|
||||||
|
) = @row;
|
||||||
|
$add_user_query->execute( $id, $name, $status, $is_public, $reg_at,
|
||||||
|
$last_login );
|
||||||
|
}
|
||||||
|
$dbh->do(
|
||||||
|
qq{
|
||||||
|
drop table users;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
$dbh->do(
|
||||||
|
qq{
|
||||||
|
alter table new_users rename to users;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
$dbh->do(
|
||||||
|
qq{
|
||||||
|
create table pending_mails (
|
||||||
|
email char(256) not null primary key,
|
||||||
|
num_tries int not null,
|
||||||
|
last_try datetime not null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
$dbh->commit;
|
||||||
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
my $schema_version = get_schema_version();
|
my $schema_version = get_schema_version();
|
||||||
|
|
Loading…
Reference in a new issue