add Pg support for date funcs
Arthur Axel 'fREW' Schmidt [Mon, 31 Jan 2011 19:15:15 +0000 (13:15 -0600)]
lib/DBIx/Class/SQLMaker/Pg.pm [new file with mode: 0644]
lib/DBIx/Class/Storage/DBI/Pg.pm

diff --git a/lib/DBIx/Class/SQLMaker/Pg.pm b/lib/DBIx/Class/SQLMaker/Pg.pm
new file mode 100644 (file)
index 0000000..df5e46a
--- /dev/null
@@ -0,0 +1,17 @@
+package # Hide from PAUSE
+  DBIx::Class::SQLMaker::Pg;
+
+use base qw( DBIx::Class::SQLMaker );
+use Carp::Clan qw/^DBIx::Class|^SQL::Abstract/;
+{
+  my %part_map = (
+     month        => 'MONTH',
+     day_of_month => 'DAY',
+     year         => 'YEAR',
+  );
+
+  sub _datetime_sql { "EXTRACT($part_map{$_[1]} FROM $_[2])" }
+  sub _datetime_diff_sql { "EXTRACT($part_map{$_[1]} FROM ($_[2] - $_[3]))" }
+}
+
+1;
index 0dc7ea8..5c1e9b4 100644 (file)
@@ -14,6 +14,7 @@ use DBIx::Class::Carp;
 use Try::Tiny;
 use namespace::clean;
 
+__PACKAGE__->sql_maker_class('DBIx::Class::SQLMaker::Pg');
 __PACKAGE__->sql_limit_dialect ('LimitOffset');
 __PACKAGE__->sql_quote_char ('"');
 __PACKAGE__->datetime_parser_type ('DateTime::Format::Pg');