
theory at bricolage
Mar 11, 2009, 11:16 AM
Post #1 of 1
(411 views)
Permalink
|
|
[8487] Cover date is now required at the database level.
|
|
Revision: 8487 Author: theory Date: 2009-03-11 11:16:49 -0700 (Wed, 11 Mar 2009) ViewCVS: http://viewsvn.bricolage.cc/?rev=8487&view=rev Log Message: ----------- Cover date is now required at the database level. It has always been required in the UI. Modified Paths: -------------- bricolage/trunk/lib/Bric/Changes.pod bricolage/trunk/sql/Pg/Bric/Biz/Asset/Business/Media.sql bricolage/trunk/sql/Pg/Bric/Biz/Asset/Business/Story.sql bricolage/trunk/sql/mysql/Bric/Biz/Asset/Business/Media.sql bricolage/trunk/sql/mysql/Bric/Biz/Asset/Business/Story.sql Added Paths: ----------- bricolage/trunk/inst/upgrade/1.11.2/ bricolage/trunk/inst/upgrade/1.11.2/cover_date_not_null.pl Added: bricolage/trunk/inst/upgrade/1.11.2/cover_date_not_null.pl =================================================================== --- bricolage/trunk/inst/upgrade/1.11.2/cover_date_not_null.pl (rev 0) +++ bricolage/trunk/inst/upgrade/1.11.2/cover_date_not_null.pl 2009-03-11 18:16:49 UTC (rev 8487) @@ -0,0 +1,46 @@ +#!/usr/bin/perl -w + +use strict; +use File::Spec::Functions qw(catdir updir); +use FindBin; +use lib catdir $FindBin::Bin, updir, 'lib'; +use bric_upgrade qw(:all); + +for my $doc qw(story media) { + # Skip it if the cover_date column is already NOT NULL. + next if test_column "$doc\_instance", 'cover_date', undef, 1; + + my $default = 'CURRENT_TIMESTAMP'; + + if (Bric::Config::DBD_TYPE eq 'Pg') { + do_sql qq{ + UPDATE $doc\_instance + SET cover_date = COALESCE( first_publish_date, publish_date, $default) + FROM $doc + WHERE $doc.id = $doc\_instance.$doc\__id + AND cover_date IS NULL + }, + qq{ + ALTER TABLE $doc\_instance + ALTER COLUMN cover_date SET DEFAULT $default + }, + qq{ + ALTER TABLE $doc\_instance + ALTER COLUMN cover_date SET NOT NULL + }; + } elsif (Bric::Config::DBD_TYPE eq 'mysql') { + do_sql qq{ + UPDATE $doc\_instance, $doc + SET cover_date = COALESCE( first_publish_date, publish_date, $default) + WHERE $doc.id = $doc\_instance.$doc\__id + AND cover_date IS NULL + }, + # Fuck you, MySQL. http://bugs.mysql.com/bug.php?id=31452 + qq{ + ALTER TABLE $doc\_instance + CHANGE cover_date cover_date TIMESTAMP NOT NULL DEFAULT $default + }; + } else { + die Bric::Config::DBD_TYPE . ' is not a supported database'; + } +} Modified: bricolage/trunk/lib/Bric/Changes.pod =================================================================== --- bricolage/trunk/lib/Bric/Changes.pod 2009-03-11 18:15:54 UTC (rev 8486) +++ bricolage/trunk/lib/Bric/Changes.pod 2009-03-11 18:16:49 UTC (rev 8487) @@ -101,6 +101,11 @@ Only show the subelement hint when the container is collapsed. [Adrian Yee] +=item * + +Cover date is now required at the database level. It has always been required +in the UI. [David] + =back =head2 Bug Fixes @@ -287,6 +292,11 @@ The pagination links now work in the edit related popup window. Reported by Adam Wilson (Bug #1428). [David] +=item * + +The "Related Story" popup now properly closes in Camino when a "relate" or +"un-relate" link is clicked. [David] + =back =head1 VERSION 1.11.1 (2008-10-03) Modified: bricolage/trunk/sql/Pg/Bric/Biz/Asset/Business/Media.sql =================================================================== --- bricolage/trunk/sql/Pg/Bric/Biz/Asset/Business/Media.sql 2009-03-11 18:15:54 UTC (rev 8486) +++ bricolage/trunk/sql/Pg/Bric/Biz/Asset/Business/Media.sql 2009-03-11 18:16:49 UTC (rev 8487) @@ -80,7 +80,7 @@ file_name VARCHAR(256), location VARCHAR(256), uri VARCHAR(256), - cover_date TIMESTAMP, + cover_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, note TEXT, checked_out BOOLEAN NOT NULL DEFAULT FALSE, CONSTRAINT pk_media_instance__id PRIMARY KEY (id) Modified: bricolage/trunk/sql/Pg/Bric/Biz/Asset/Business/Story.sql =================================================================== --- bricolage/trunk/sql/Pg/Bric/Biz/Asset/Business/Story.sql 2009-03-11 18:15:54 UTC (rev 8486) +++ bricolage/trunk/sql/Pg/Bric/Biz/Asset/Business/Story.sql 2009-03-11 18:16:49 UTC (rev 8487) @@ -77,7 +77,7 @@ usr__id INTEGER NOT NULL, slug VARCHAR(64), primary_oc__id INTEGER NOT NULL, - cover_date TIMESTAMP, + cover_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, note TEXT, checked_out BOOLEAN NOT NULL DEFAULT FALSE, CONSTRAINT pk_story_instance__id PRIMARY KEY (id) Modified: bricolage/trunk/sql/mysql/Bric/Biz/Asset/Business/Media.sql =================================================================== --- bricolage/trunk/sql/mysql/Bric/Biz/Asset/Business/Media.sql 2009-03-11 18:15:54 UTC (rev 8486) +++ bricolage/trunk/sql/mysql/Bric/Biz/Asset/Business/Media.sql 2009-03-11 18:16:49 UTC (rev 8487) @@ -60,7 +60,7 @@ file_name VARCHAR(256), location VARCHAR(256), uri VARCHAR(256), - cover_date TIMESTAMP NULL DEFAULT NULL, + cover_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, note TEXT, checked_out BOOLEAN NOT NULL DEFAULT FALSE, CONSTRAINT pk_media_instance__id PRIMARY KEY (id) Modified: bricolage/trunk/sql/mysql/Bric/Biz/Asset/Business/Story.sql =================================================================== --- bricolage/trunk/sql/mysql/Bric/Biz/Asset/Business/Story.sql 2009-03-11 18:15:54 UTC (rev 8486) +++ bricolage/trunk/sql/mysql/Bric/Biz/Asset/Business/Story.sql 2009-03-11 18:16:49 UTC (rev 8487) @@ -58,7 +58,7 @@ usr__id INTEGER, slug VARCHAR(64), primary_oc__id INTEGER NOT NULL, - cover_date TIMESTAMP NULL DEFAULT NULL, + cover_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, note TEXT, checked_out BOOLEAN NOT NULL DEFAULT FALSE, CONSTRAINT pk_story_instance__id PRIMARY KEY (id)
|