DBIx::Class::Schema::Loader dbicdump 是否可以为 JSYNC 自动添加序列化程序
Is it possible for DBIx::Class::Schema::Loader dbicdump to auto add serializer for JSYNC
我是 运行
dbicdump -o dump_directory=./lib \
-o components='["InflateColumn::DateTime", "InflateColumn::Serializer"]' \
-o debug=1 \
-o db_schema=foo \
-o qualify_objects=1 \
Foo::Schema \
'dbi:Pg:dbname=foo' username password
针对 Postgres 数据库,希望生成的模式将生成膨胀时间戳和 JSON 列类型所需的代码。
查看生成的架构文件,我看到
__PACKAGE__->load_components("InflateColumn::Serializer", "InflateColumn::DateTime");
行,但现在我必须将 serializer_class => 'JSYNC'
添加到我想要膨胀和收缩的每个 JSON 列。
有没有办法让 dbicdump 自动执行此操作,或者是否需要手动设置这些访问器?
谢谢!
不确定这是否可以从 dbicdump 程序中实现,但是如果您使用以下 perl 程序,您可以完全按照我的要求进行操作:
#!/usr/bin/env perl
use strict;
use warnings;
use DBIx::Class::Schema::Loader qw/make_schema_at/;
make_schema_at(
'Foo::Schema',
{
dump_directory => './lib',
components => [ "InflateColumn::Serializer", "InflateColumn::DateTime" ],
db_schema => 1,
qualify_objects => 1,
custom_column_info => sub {
my ($table, $column_name, $column_info) = @_;
if ( $column_info->{data_type} eq "json" ) {
return { serializer_class => "JSYNC" };
}
},
},
[
"dbi:Pg:dbname=foo',
"username",
"password"
]
);
希望这可以节省一些研究时间。
我是 运行
dbicdump -o dump_directory=./lib \
-o components='["InflateColumn::DateTime", "InflateColumn::Serializer"]' \
-o debug=1 \
-o db_schema=foo \
-o qualify_objects=1 \
Foo::Schema \
'dbi:Pg:dbname=foo' username password
针对 Postgres 数据库,希望生成的模式将生成膨胀时间戳和 JSON 列类型所需的代码。
查看生成的架构文件,我看到
__PACKAGE__->load_components("InflateColumn::Serializer", "InflateColumn::DateTime");
行,但现在我必须将 serializer_class => 'JSYNC'
添加到我想要膨胀和收缩的每个 JSON 列。
有没有办法让 dbicdump 自动执行此操作,或者是否需要手动设置这些访问器?
谢谢!
不确定这是否可以从 dbicdump 程序中实现,但是如果您使用以下 perl 程序,您可以完全按照我的要求进行操作:
#!/usr/bin/env perl
use strict;
use warnings;
use DBIx::Class::Schema::Loader qw/make_schema_at/;
make_schema_at(
'Foo::Schema',
{
dump_directory => './lib',
components => [ "InflateColumn::Serializer", "InflateColumn::DateTime" ],
db_schema => 1,
qualify_objects => 1,
custom_column_info => sub {
my ($table, $column_name, $column_info) = @_;
if ( $column_info->{data_type} eq "json" ) {
return { serializer_class => "JSYNC" };
}
},
},
[
"dbi:Pg:dbname=foo',
"username",
"password"
]
);
希望这可以节省一些研究时间。