Browse Source

New schema for PostgreSQL and MySQL

rpm
J. King 4 years ago
parent
commit
16d2e01668
  1. 3
      lib/Database.php
  2. 15
      sql/MySQL/6.sql
  3. 17
      sql/PostgreSQL/6.sql

3
lib/Database.php

@ -256,7 +256,8 @@ class Database {
throw new User\Exception("alreadyExists", ["action" => __FUNCTION__, "user" => $user]);
}
$hash = (strlen($password) > 0) ? password_hash($password, \PASSWORD_DEFAULT) : "";
$this->db->prepare("INSERT INTO arsse_users(id,password,num) values(?, ?, coalesce((select max(num) from arsse_users), 0) + 1)", "str", "str")->runArray([$user,$hash]);
// NOTE: This roundabout construction (with 'select' rather than 'values') is required by MySQL, because MySQL is riddled with pitfalls and exceptions
$this->db->prepare("INSERT INTO arsse_users(id,password,num) select ?, ?, ((select max(num) from arsse_users) + 1)", "str", "str")->runArray([$user,$hash]);
return true;
}

15
sql/MySQL/6.sql

@ -2,5 +2,20 @@
-- Copyright 2017 J. King, Dustin Wilson et al.
-- See LICENSE and AUTHORS files for details
alter table arsse_users add column num bigint unsigned unique;
alter table arsse_users add column admin boolean not null default 0;
alter table arsse_users add column lang longtext;
alter table arsse_users add column tz varchar(44) not null default 'Etc/UTC';
alter table arsse_users add column soort_asc boolean not null default 0;
create temporary table arsse_users_existing(
id text not null,
num serial primary key
) character set utf8mb4 collate utf8mb4_unicode_ci;
insert into arsse_users_existing(id) select id from arsse_users;
update arsse_users as u, arsse_users_existing as n
set u.num = n.num
where u.id = n.id;
drop table arsse_users_existing;
alter table arsse_users modify num bigint unsigned not null;
update arsse_meta set value = '7' where "key" = 'schema_version';

17
sql/PostgreSQL/6.sql

@ -2,6 +2,21 @@
-- Copyright 2017 J. King, Dustin Wilson et al.
-- See LICENSE and AUTHORS files for details
alter table arsse_users add column num bigint unique;
alter table arsse_users add column admin smallint not null default 0;
alter table arsse_users add column lang text;
alter table arsse_users add column tz text not null default 'Etc/UTC';
alter table arsse_users add column soort_asc smallint not null default 0;
create temp table arsse_users_existing(
id text not null,
num bigserial
);
insert into arsse_users_existing(id) select id from arsse_users;
update arsse_users as u
set num = e.num
from arsse_users_existing as e
where u.id = e.id;
drop table arsse_users_existing;
alter table arsse_users alter column num set not null;
update arsse_meta set value = '7' where "key" = 'schema_version';

Loading…
Cancel
Save