provide DB compatibility for poll and voting implementations across several platforms

This commit is contained in:
zotlabs 2018-02-22 20:52:39 -08:00
parent 80ce2def46
commit 277da43631
4 changed files with 47 additions and 1 deletions

34
Zotlabs/Update/_1204.php Normal file
View file

@ -0,0 +1,34 @@
<?php
namespace Zotlabs\Update;
class _1204 {
function run() {
if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) {
$r1 = q("ALTER TABLE poll ADD pull_guid text NOT NULL");
$r2 = q("create index \"poll_guid_idx\" on poll \"poll_guid\"");
$r3 = q("ALTER TABLE poll_elm ADD pelm_guid text NOT NULL");
$r4 = q("create index \"pelm_guid_idx\" on poll_elm \"pelm_guid\"");
$r5 = q("ALTER TABLE vote ADD vote_guid text NOT NULL");
$r6 = q("create index \"vote_guid_idx\" on vote \"vote_guid\"");
$r = ($r1 && $r2 && $r3 && $r4 && $r5 && $r6);
}
else {
$r1 = q("ALTER TABLE `poll` ADD `pull_guid` VARCHAR(191) NOT NULL, ADD INDEX `poll_guid` (`pull_guid`) ");
$r2 = q("ALTER TABLE `poll_elm` ADD `pelm_guid` VARCHAR(191) NOT NULL, ADD INDEX `pelm_guid` (`pelm_guid`) ");
$r1 = q("ALTER TABLE `vote` ADD `vote_guid` VARCHAR(191) NOT NULL, ADD INDEX `vote_guid` (`vote_guid`) ");
$r = ($r1 && $r2 && $r3);
}
if($r)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}
}

View file

@ -53,7 +53,7 @@ define ( 'PLATFORM_NAME', 'hubzilla' );
define ( 'STD_VERSION', '3.1.12' );
define ( 'ZOT_REVISION', '1.3' );
define ( 'DB_UPDATE_VERSION', 1203 );
define ( 'DB_UPDATE_VERSION', 1204 );
define ( 'PROJECT_BASE', __DIR__ );

View file

@ -964,11 +964,13 @@ CREATE TABLE IF NOT EXISTS `photo` (
CREATE TABLE IF NOT EXISTS `poll` (
`poll_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`poll_guid` varchar(191) NOT NULL,
`poll_channel` int(10) unsigned NOT NULL DEFAULT 0 ,
`poll_desc` text NOT NULL,
`poll_flags` int(11) NOT NULL DEFAULT 0 ,
`poll_votes` int(11) NOT NULL DEFAULT 0 ,
PRIMARY KEY (`poll_id`),
KEY `poll_guid` (`poll_guid`),
KEY `poll_channel` (`poll_channel`),
KEY `poll_flags` (`poll_flags`),
KEY `poll_votes` (`poll_votes`)
@ -976,11 +978,13 @@ CREATE TABLE IF NOT EXISTS `poll` (
CREATE TABLE IF NOT EXISTS `poll_elm` (
`pelm_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`pelm_guid` varchar(191) NOT NULL,
`pelm_poll` int(10) unsigned NOT NULL DEFAULT 0 ,
`pelm_desc` text NOT NULL,
`pelm_flags` int(11) NOT NULL DEFAULT 0 ,
`pelm_result` float NOT NULL DEFAULT 0 ,
PRIMARY KEY (`pelm_id`),
KEY `pelm_guid` (`pelm_guid`),
KEY `pelm_poll` (`pelm_poll`),
KEY `pelm_result` (`pelm_result`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@ -1258,12 +1262,14 @@ CREATE TABLE IF NOT EXISTS `verify` (
CREATE TABLE IF NOT EXISTS `vote` (
`vote_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`vote_guid` varchar(191) NOT NULL,
`vote_poll` int(11) NOT NULL DEFAULT 0 ,
`vote_element` int(11) NOT NULL DEFAULT 0 ,
`vote_result` text NOT NULL,
`vote_xchan` char(191) NOT NULL DEFAULT '',
PRIMARY KEY (`vote_id`),
UNIQUE KEY `vote_vote` (`vote_poll`,`vote_element`,`vote_xchan`),
KEY `vote_guid` (`vote_guid`),
KEY `vote_poll` (`vote_poll`),
KEY `vote_element` (`vote_element`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

View file

@ -942,6 +942,7 @@ create index "photo_os_storage" on photo ("os_storage");
CREATE TABLE "poll" (
"poll_id" serial NOT NULL,
"poll_guid" text NOT NULL,
"poll_channel" bigint NOT NULL DEFAULT '0',
"poll_desc" text NOT NULL,
"poll_flags" bigint NOT NULL DEFAULT '0',
@ -949,17 +950,20 @@ CREATE TABLE "poll" (
PRIMARY KEY ("poll_id")
);
create index "poll_guid" on poll ("poll_guid");
create index "poll_channel" on poll ("poll_channel");
create index "poll_flags" on poll ("poll_flags");
create index "poll_votes" on poll ("poll_votes");
CREATE TABLE "poll_elm" (
"pelm_id" serial NOT NULL,
"pelm_guid" text NOT NULL,
"pelm_poll" bigint NOT NULL DEFAULT '0',
"pelm_desc" text NOT NULL,
"pelm_flags" bigint NOT NULL DEFAULT '0',
"pelm_result" float NOT NULL DEFAULT '0',
PRIMARY KEY ("pelm_id")
);
create index "pelm_guid" on poll_elm ("pelm_guid");
create index "pelm_poll" on poll_elm ("pelm_poll");
create index "pelm_result" on poll_elm ("pelm_result");
@ -1227,6 +1231,7 @@ create index "verify_meta" on verify ("meta");
create index "verify_created" on verify ("created");
CREATE TABLE "vote" (
"vote_id" serial NOT NULL,
"vote_guid" text NOT NULL,
"vote_poll" bigint NOT NULL DEFAULT '0',
"vote_element" bigint NOT NULL DEFAULT '0',
"vote_result" text NOT NULL,
@ -1234,6 +1239,7 @@ CREATE TABLE "vote" (
PRIMARY KEY ("vote_id"),
UNIQUE ("vote_poll","vote_element","vote_xchan")
);
create index "vote_guid" on vote ("vote_guid");
create index "vote_poll" on vote ("vote_poll");
create index "vote_element" on vote ("vote_element");
CREATE TABLE "xchan" (